ssh免密码登陆

来源:互联网 发布:微信相关软件 编辑:程序博客网 时间:2024/04/30 15:02

最近放弃了xshell,从此每次ssh上服务器都要输入密码,问题是服务器众多,每天登陆次数也多,输入密码成了

繁重的工作。

google几次后,试用了免密码登陆的方式,用起来挺方便的。今记录如下,以免忘记。

准备条件:

服务器A:192.168.1.1

服务器B:192.168.1.2

假使我们希望在服务器A(简称A)上想登陆到服务器B(简称B),B端口:22,登陆用户:user1,密码:123

方法一(ssh-keygen):

在A上执行:

ssh-keygen -t rsa //连续按3次回车,即在本地生成了公钥和私钥,不设置密码ssh user1@192.168.1.2 -p 22 "mkdir .ssh"scp -P 9922 ~/.ssh/id_rsa.pub user1@192.168.1.2:.ssh/id_rsa.pub


执行完以后,基本上在服务器A上,执行ssh user1@192.168.1.2 -p 22不需要输入密码。

为了简化输入用户,ip,端口等信息,可以如下做

在 ~/.ssh 下创建config文件输入以下内容Host BHostName 192.168.1.2User user1Port 22如果还有其他服务器信息,只需在该文件最后再次添加如上信息便可。

修改完config文件后,以后只需执行 ssh B基本上能登陆服务器B了,既短,又不需要输入密码。

好了,方法一告一段落,但是该方法有个限制,就是只有两台服务器在同一网段,才有效,当不在同一网段时

便会失败,不知道是我服务器配置问题,还是网络导致。如有知道原因的请不吝赐教。多谢。

因此花了点时间研究方法二,如下。

方法二:

编写脚本,随便什么名字。

#!/bin/expectset timeout 30 spawn ssh [lindex $argv 0] #运行参数一,服务器信息expect "*password:"send [lindex $argv 1]\r #服务器登陆密码interact

运行该脚本:

expect xx.sh B 123

此时服务器B的配置已经写进~/.shh/config。

如未写进~/.ssh/config配置,则该脚本需要相应修改。


介绍完毕,不过我一般会在 ~/.bash_profile里面加入一行:

alias loginb="expect xxx.sh B 123"

每次打开终端的时候该别名会自动起作用,于是乎,每次我只需要使用“loginb”命令,便能登陆服务器B。

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.


本文地址:http://blog.csdn.net/icoler/article/details/8154773 转发请注明。

原创粉丝点击