在运维场景中,如果需要在一台服务器操作另一台服务器,就需要目标服务器(下面称为 B 服务器)信任当前服务器(下面称为 A 服务器)。
在 A 服务器生成证书。
ssh-keygen -t rsa
一直回车结束。
会在 /root/.ssh
目录下生成 id_rsa
和 id_rs.pub
两个文件:
id_rsa
为私钥。id_rs.pub
为公钥。公钥拷贝到 B 服务器。
scp /root/.ssh/id_rsa.pub root@B:/root/
这里由于 B 服务器还没有信任 A 服务器,所以会提示输入密码。
登录 B 服务器,并将该文件追加到 /root/.ssh/authorized_keys
文件中。
cat /root/id_rsa.pub >>/root/.ssh/authorized_keys
如果此时报Operation not permitted
,说明authorized_keys
没有修改权限,可以进行如下操作:
修改 authorized_keys
权限:
chmod 600 /root/.ssh/authorized_keys
如果依然报Operation not permitted
,有以下两种可能:
当前用户权限不足,可以在命令前面加上sudo
执行:
sudo chmod 600 /root/.ssh/authorized_keys
如果以上命令依然报Operation not permitted
,则可能是文件处于保护状态,执行如下命令解除:
chattr -ia /root/.ssh/authorized_keys
如此再执行上诉操作即可。
使用如下命令可以传输 A 服务器的文件到 B 服务器。
scp A文件路径 B账号@B地址:B路径
可以在 A 服务器使用如下命令操作 B 服务器。
ssh -tt B账号@B地址 '在B上执行的命令'