用ssh-copy-id
1. 首先在你的本地mac上打开一个shell,进入到~/.ssh目录,然后看一下该目录下的文件
cd ~/.ssh
ls // 看一下文件,看看有没有已经生成过的公私钥对
2.这边做分a,b两种情况:
(a). 第一种情况你没有生成过公私钥对(生成过这个目录下会有类似 xxx xxx.pub 的文件),或者你生成过,但是你想创建一个新的公私钥对。
ssh-keygen
// 根据交互,输入你想要的名字(默认id_rsa),然后是密码,可以为空,生成公私钥对
ls // 这时候当前目录下会多了一对公私钥对(.pub结尾的是共钥匙)。
(b). 已经有一组公私钥对的可以不生成。
3.这一步是要把共钥复制到服务器上,可以使 ssh-copy-id 这个脚本工具
ssh-copy-id -i [公钥文件] user@host
// user是你的ssh的用户,host是服务器地址,这时候还要输入密码。
// 例子:ssh-copy-id -i id_rsa.pub root@111.111.111.111
4.好一般别的系统到第三步就可以免密登陆了,但是mac并不这样。还要调用ssh-add。
ssh-add -K [你的私钥文件,就是那个不加.pub结尾的文件]
// 例如ssh-add -K id_rsa
注意上面的shell命令都在~/.ssh目录下,中途请不要切换目录。
用expect
脚本
#!/usr/bin/expect -f
set password <password>
set user <username>
set host <host>
set timeout -1
spawn ssh $user@$host
expect "*assword:*"
send "$password\r"
interact
expect eof
脚本保存到某一目录
expect 路径/脚本