ssh-keygen配置免密登陆
时间: 2023-09-27 14:08:57 浏览: 130
SSH免密登陆是指在不输入密码的情况下,通过SSH协议连接远程主机。它的实现原理是在本地主机上生成一对公私钥,将公钥上传到远程主机上,当本地主机通过SSH协议连接到远程主机时,远程主机会验证本地主机的公钥是否在其授权的列表中,如果验证通过,则可以免密登陆。
以下是SSH免密登陆的配置步骤:
1. 在本地主机上使用ssh-keygen命令生成公私钥对:
```
ssh-keygen -t rsa
```
2. 生成的公私钥对默认存储在~/.ssh目录下,其中id_rsa是私钥,id_rsa.pub是公钥。
3. 将公钥上传到远程主机的~/.ssh/authorized_keys文件中:
```
ssh-copy-id user@remote-host
```
其中,user是远程主机的用户名,remote-host是远程主机的IP地址或域名。
4. 验证免密登陆是否成功:
```
ssh user@remote-host
```
如果成功连接到远程主机,说明免密登陆已经配置成功。
注意:在上传公钥到远程主机时,如果~/.ssh目录或authorized_keys文件不存在,则需要手动创建。此外,authorized_keys文件的权限必须设置为600,否则会导致免密登陆失效。
相关问题
安装SSH,并配置SSH免密登陆
安装SSH(Secure Shell)通常是在Linux或macOS系统中进行的,它是远程登录服务器的一种安全协议。以下是基本步骤:
1. **在Linux上安装SSH**:
对于大多数基于Debian的发行版(如Ubuntu),你可以打开终端并运行以下命令:
```
sudo apt-get update
sudo apt-get install openssh-server
```
对于基于Red Hat的发行版(如CentOS、Fedora),则使用:
```
sudo yum install openssh-server
```
2. **在macOS上安装SSH**:
在Homebrew中安装:
```
brew install ssh
```
3. **启动SSH服务**:
在安装完成后,你需要启动ssh服务,通常是自动启动的,但确认一下:
```
sudo systemctl start ssh
sudo systemctl enable ssh
```
4. **配置SSH免密登陆**:
- 首先创建一个新的SSH密钥对(如果还没有的话):
```
ssh-keygen -t rsa -b 4096 -C "[email protected]"
```
- 然后输入提示信息,按回车即可,不需要设置密码。
- 将公钥复制到目标服务器的`~/.ssh/authorized_keys`文件中,通常通过`scp`命令将本地生成的id_rsa.pub文件发送过去。
5. **验证无密码登录**:
回到本地机器,输入:
```
ssh-copy-id user@target_server_ip
```
替换`user`为远程服务器用户名,`target_server_ip`为目标服务器地址。
完成以上步骤后,你就应该可以在不输入密码的情况下从本地机器通过SSH连接到远程服务器了。
安装 openssh 并配置 SSH 服务 配置 SSH 免密登录
### 安装 OpenSSH 并配置 SSH 服务
为了确保能够成功安装和配置 OpenSSH 及其相关组件,以下是详细的指南。
#### 安装 OpenSSH
对于基于 Red Hat 的系统(如 CentOS),可以通过 yum 包管理器来安装最新的稳定版 OpenSSH:
```bash
sudo yum update -y
sudo yum install -y openssh-server openssl
```
对于基于 Debian 的系统(如 Ubuntu 或 Kali Linux),则应使用 apt-get 来完成相同的操作:
```bash
sudo apt-get update
sudo apt-get install -y openssh-server openssl
```
一旦安装完毕,确认 SSH 服务已启动并设置开机自启[^1]。
#### 配置 SSH 服务
默认情况下,`sshd_config` 文件位于 `/etc/ssh/sshd_config`。建议备份原始文件后再做任何修改:
```bash
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
```
编辑 `sshd_config` 文件以调整必要的参数,例如允许 root 用户通过公钥认证登录:
```bash
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
```
保存更改后重启 SSH 服务使新配置生效:
```bash
systemctl restart sshd
```
#### 设置 SSH 免密登录
要实现无密码访问目标机器,需创建一对 RSA 密钥对并将公钥复制到远程主机上。这可通过 `ssh-keygen` 和 `ssh-copy-id` 工具轻松达成。
生成本地私钥与对应的公钥:
```bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
```
将生成的公钥分发给其他需要连接的目标节点:
```bash
ssh-copy-id user@remote_host_ip_address
```
此时应该能够在不输入密码的情况下正常登陆指定服务器了[^2]。
阅读全文
相关推荐














