本文详解如何以多种方法实现ssh免密码登录远程服务器shell
1.如下方法操做时请不要随意切换目录。
2.xxx为私钥,xxx.pub是公钥(默认通常文件名为id_rsa和id_rsa.pub,能够在建立的时候自定义文件名)
3.若是是公司给你的公私钥对,你想免密登陆公司服务器,你能够直接放到你的~/.ssh文件中,可跳过建立公私钥的步骤ubuntu
1. 本地建立公私钥windows
cd ~/.ssh # 在你的本地打开shell,进入到~/.ssh目录,而后看一下该目录下的文件 ls # 看一下文件,看看有没有已经生成过的公私钥对(xxx和xxx.pub) 分两种状况: A.第一种状况你没有生成过公私钥对(生成过这个目录下会有相似xxx和xxx.pub 的文件)或者你生成过,可是你想建立一个新的公私钥对 ssh-keygen # 根据交互,输入你想要的名字(默认id_rsa),而后是密码,能够为空,生成公私钥对 ls # 这时候当前目录下会多了一对公私钥对 B.已经有一组公私钥对的能够不生成。
2.将本身的公钥xxx.pub上传到服务器~/.ssh文件中服务器
# 若是服务器没有.ssh文件,终端登陆到服务器,输入如下命令: mkdir ~/.ssh # 肯定服务器有.ssh文件后输入(user是用户名,host是服务器ip,xxx.pub为你的公钥): scp ~/.ssh/xxx.pub user@host:~/.ssh/xxx.pub 例子:scp ~/.ssh/yzy.pub developer@172.18.69.1:~/.ssh/yzy.pub
3.将服务器刚上传的公钥xxx.pub追加到 服务器的~/.ssh/authorized_keys 文件中ssh
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
4.赋予文件权限工具
chmod 700 .ssh chmod 600 authorized_keys
1. 本地建立公私钥spa
cd ~/.ssh # 在你的本地打开shell,进入到~/.ssh目录,而后看一下该目录下的文件 ls # 看一下文件,看看有没有已经生成过的公私钥对(xxx和xxx.pub) 分两种状况: A.第一种状况你没有生成过公私钥对(生成过这个目录下会有相似xxx和xxx.pub 的文件)或者你生成过,可是你想建立一个新的公私钥对 ssh-keygen # 根据交互,输入你想要的名字(默认id_rsa),而后是密码,能够为空,生成公私钥对 ls # 这时候当前目录下会多了一对公私钥对 B.已经有一组公私钥对的能够不生成。
2.使 ssh-copy-id 这个脚本工具把共钥复制到服务器上code
# user是用户名,host是服务器地址,还要输入服务器密码 命令:ssh-copy-id -i xxx.pub user@host 例子:ssh-copy-id -i yzy.pub -p 50715 developer@56.45.12.89
3.windows和ubuntu系统能够免密登录,mac系统免密登录服务器还须要执行第三步调用ssh-addip
# xxx为你的私钥文件 命令:ssh-add -K xxx 例如ssh-add -K yzy
1.在某一目录下建立login.sh脚本(最好是用户目录下,即你一打开终端的位置,方便直接使用)登录
touch login.sh
2.修改下面代码用户名和密码后复制到login.sh文件中
#!/usr/bin/expect -f # 设置命令第一个参数为host,也能够在脚本里写死 set host [lindex $argv 0] # 设置用户名(zzz为你的用户名) set user zzz # 设置密码(xxx为你的密码) set password xxx # 设置超时时间 set timeout 5 spawn ssh $user@$host expect "*assword:*" send "$password\r" interact expect eof
3.启动脚本登陆服务器:sh login.sh