今天,我使用公共 SSH 密钥设置了 3 台服务器(4 台包括发送 SSH 命令的服务器),这样我就可以自动化一些脚本
它适用于前 2 个系统,但不适用于第三个系统。发送 SSH 命令时 SSH 仍然提示输入密码
在本地服务器上生成 SSH 公钥/私钥
root@local # ssh-keygen -t rsa
file > /var/.ssh_keys/id_rsa
passphrase > (empty)
root@local # ln -s /var/.ssh_keys/id_rsa /root/.ssh/id_rsa
将密钥从本地服务器附加到远程主机
root@local # cat /var/.ssh_keys/id_rsa.pub | ssh root@host 'path="/var/.ssh_remote_key" && mkdir -p $path && cat >> $path/authorized_keys && ln -s $path/authorized_keys /root/.ssh/authorized_keys'
本地服务器
# uname -a
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
# sshd -V
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
远程服务器(工作)
# uname -a
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
# sshd -V
OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016
远程服务器(仍提示输入密码)
# uname -a
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
# sshd -V
OpenSSH_6.7p1 Debian-5+deb8u2, OpenSSL 1.0.1k 8 Jan 2015
CHMOD /root/.ssh = 0700
CHMOD /root/.ssh/authorized_keys = 0644
答案1
由于两个远程服务器共享相似版本的 Unix/OpenSSH,因此问题可能出在文件夹permission
中的文件中.ssh
。
请确认:
.ssh
目录权限不可写入组/其他(例如 700(drwx------)
或 755(drwxr-xr-x)
- 公钥(.pub 文件)并且
authorized_keys
是 644(-rw-r--r--)
- 私钥(id_rsa)为 600
(-rw-------)
如果您尝试登录root
远程服务器,您还应该确认/etc/ssh/sshd_config
包含PermitRootLogin yes
或PermitRootLogin without-password
。