环境:

192.168.2.10

192.168.2.11

实现:2.10 ssh无需密码登录到2.11

在2.10 ssh到2.11机器上,需要密码,这样对一些脚本工作不方便,因为需要密码,也就是需要人工干预。此前用的方法是拷贝authorized_keys里面(记不清了,以前搞过),最近发现一个命令ssh-copy-id很方便:


在192.168.2.10机器上操作

1)zwf用户,cd ~,运行:ssh-keygen -t rsa

2)然后拍两下回车(均选择默认)

3)运行: ssh-copy-id -i .ssh/id_rsa.pub zwf@192.168.2.11

注:由于服务器修改了ssh端口号(你懂!?)所以此命令需要修改一下

          ssh-copy-id ‘-p2222 -i .ssh/id_rsa.pub zwf@192.168.2.11’

一定用单引,否则会报错误

Pseudo-terminal will not be allocated because stdin is not a terminal.

ssh: umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys: Name or service not known

4)再输入2.11机器上的zwf密码

此时,再ssh 到2.11机器,则不需要密码了。相互之间scp,也不需要密码。rsync也无需。

此方法的好处是无需修改/etc/ssh/sshd_config配置文件,之前我发的文章需要修改sshd_config文件。


接下来,就可以在不输入密码的情况下在远程主机私执行命令了。命令格式如下:

 ssh 远程用户名@远程主机名或IP地址 '远程命令或者脚本'

ssh user@HOSTD 'hostname'
ssh user@HOSTD '/home/user/script/test.sh'


如果使用SSH远程执行命令包含在shell脚本中,执行中带参数:

  ssh user@HOSTD "/home/user/script/test.sh $1"