首先要理解 ssh
原理,参考 SSH原理与运用,这里有详细介绍。
远程免密登录
- 在本地生成
ssh
密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa_remote -C "comment"
一路回车即可,此命令结束后,将在目录 ~/.ssh
下生成文件 id_rsa_remote.pub
(本地公钥) 和 id_rsa_remote
(本地私钥) 两个文件。
参数说明
参数 | 描述 |
---|---|
-t |
加密方式:RSA 和 DSA 两种密钥 |
-f |
指定密钥文件名(不带 -f 参数默认生成文件 id_rsa_remote.pub 、id_rsa_remote ) |
-C |
提供一个新注释 |
- 添加登录配置
在目录~/.ssh
下新建或修改config
文件,添加如下信息:
Host remote
HostName 10.10.10.10 # 远程IP地址
Port 22 # 端口号 默认22
User test # 登录用户
IdentityFile ~/.ssh/id_rsa_remote # 为生成 `ssh` 密钥时 `-f` 参数后的文件
- 将公钥传递到远程服务器上
ssh-copy-id -i ~/.ssh/id_rsa_remote test@10.10.10.10
ssh-copy-id -i ~/.ssh/id_rsa_remote test@10.10.10.10 -p 10020
此命令将会把本地公钥 id_rsa_remote.pub
的内容,写入到远程服务器目录 ~/.ssh
下的 authorized_keys
文件中。
- 免密登录远程服务器
ssh remote # remote 是本地 ~/.ssh/config 文件中配置的 Host 的值
如果还是不行,就打开远程主机的 /etc/ssh/sshd_config
这个文件,检查下面几行前面"#"注释是否取掉。
RSAAuthentication yes # 没有该值则添加
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启远程 ssh
服务
// contos系统
service sshd restart
// ubuntu系统
service ssh restart
// debian系统
/etc/init.d/ssh restart
如需配置多个 ssh
远程免密登录,只要重复以上步骤,改下生成 ssh
密钥步骤中的 -f
参数
网友评论