我有两台虚拟机,我希望它们通过 ssh 相互运行远程命令。我在第一台机器上运行这些命令:
ssh-keygen -t rsa
ssh-copy-id 192.168.254.148
然后我运行了这个命令,它没有要求输入密码:
[root@fazi1 data1]# ssh [email protected] df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.7G 893M 6.5G 12% /
tmpfs 1.5G 16K 1.5G 1% /dev/shm
/dev/sda1 194M 41M 144M 22% /boot
/dev/sda2 11G 7.7G 2.4G 77% /data1
/dev/sda7 4.5G 539M 3.8G 13% /data2
/dev/sda5 7.7G 1.4G 6.0G 19% /opt
我在第二台机器上运行这些命令:
ssh-keygen -t rsa
ssh-copy-id 192.168.254.150
当我想检查它是否有效时:
[root@fazi2 data1]# ssh [email protected] df -h
[email protected]'s password:
为什么它在第一台机器上按照我想要的方式工作,而在第二台机器上表现不同?
我应该怎么办? (我运行了这些命令几次,以确保我没有输入错误的密码。)
答案1
如果我没记错的话,如果root登录被禁用.150
,即你有
PermitRootLogin no
在 中/etc/sshd/sshd_config
,它将拒绝所有密钥,并且如果原则上允许的话,可能会进行密码身份验证。 (它还会拒绝所有密码,即使是正确的密码。)
运行会给你一个非常详细的输出,告诉你可能会出现什么问题。您将在等中看到您的密钥行,并且您可以查看您的客户端是否将它们提供给服务器,以及服务器是否喜欢它们。如果您不提供,则可能是客户端的权限问题,如果服务器拒绝它们,则它们要么不在远程端(但应该给您一个错误,要么服务器不提供)允许 root 登录。ssh -vvv [email protected] false
/root/.ssh/id_rsa
authorized_keys
ssh-copy-id