假设 local 需要 ssh 连接到 remote,且不希望每次连接的时候都输入密码(比如从服务器 A 连到 服务器 B)。
本地生成公钥私钥对
# 在本地(local 主机).ssh 路径生成公钥和私钥文件
$ ssh-keygen -t rsa
# 一路回车即可
将公钥复制到远程主机
scp
local
$ cd ~/.ssh
# 查看该路径下是否有 authorized_keys 文件,如果没有:
$ cp id_rsa.pub authorized_keys
# 如果有:
$ cat id_rsa.pub >> authorized_keys
# 将公钥传输到 remote
$ scp id_rsa.pub user@remote:/path/to/a.pub
remote
# 将公钥文件追加至 authorized_keys
$ cat /paht/to/a.pub >> ~/.ssh/authorized_keys
或 ssh-copy-id
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote
按上述配置后依然需要密码登录
可查看安全日志中的异常信息,如 CentOS 中 /var/log/secure
,如提示 Authentication refused: bad ownership or modes for file /home/xxx/.ssh/authorized_keys
,则需要修改 .ssh
目录和 authorized_keys
文件的权限,去掉用户组的写权限:
chmod g-w authorized_keys