最新SSH自动登录方案(RSA)

一. 前言

直接使用ssh连接到服务器时,需要手动输入密码。如果能够不用手动输入密码,且自动登录到SSH服务器的话,那就爽了。

经过一晚上的研究,终于搞定了。(原因在于旧的配置方式已不能正确使用了)

在进行配置前,先假定ssh客户端为ssh-client,ssh服务器为ssh-server(运行ssh服务的一边)。

二. 配置方法

1. 在ssh-client一边使用ssh-keygen生成一对rsa key

$ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/abee/.ssh/id_rsa): <回车>

Enter passphrase (empty for no passphrase): <回车>

Enter same passphrase again: <回车>

执行过程中连续回车即可,成功生成key后。private key 保存在~/.ssh/id_rsa,而public key保存在~/.ssh/id_rsa.pub

2. 在ssh-client一边使用ssh-add将刚生成的private key加入到ssh agent中(旧配置方式没有这步哟)

$ssh-add ~/.ssh/id_rsa

Identity added: id_rsa (id_rsa)

3. 将上述的public key(id_rsa.pub)的内容附加到ssh-server端的.ssh/authorized_keys中

$cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat - >> authorized_keys"

4. 此时,配置完成啦。当再次使用ssh [email protected]登录时,不再使用密码啦。

三. 重启ssh-client

重启ssh-client后,需要重新使用ssh-add将上面的private key加入到ssh-agent中。因为ssh-agent重启后,其没有保留上次记录的private key,因此需要重新使用ssh-add将private key加入。

经过测试,对同一个private key进行多次ssh-add是没有问题的,总体感觉ssh-add或者ssh-agent会过滤重复的private key。

为了实现一次配置,重复使用。可以考虑将ssh-add的执行放到~/.profile下,每次重新登录X或者Console后,系统就会自动从~/.profile中的ssh-add命令将private key加到ssh-agent中。

$echo "ssh-add ~/.ssh/id_rsa" >> ~/.profile

这个方法在ubuntu10.04测试通过。

四. 单个ssh-client与多个ssh-server

经过测试,在不止一个ssh-server的情况下,每一个ssh-server可以共用上述的publice key。而ssh-client仅用一个pirvate key.

五. 特别注意

1. 上述使用RSA方式进行ssh身份验证,具体可以查看man ssh。从上面两种环境可以看出,ssh-keygen产生的private key是关键文件,可以说这个就是ssh的登录密码。因此在ssh-client一侧,该文件的权限一般设置为600。

2. 在ssh-server侧存储public key的authorized_keys文件的权限至少是400,即最少也要用户可读。另外由于该public key可以计算出private key,且一般还会写入其他public key,所以其权限一般设置为700。

3. 一般情况下,对于多个ssh-server,最好的方案是针对每一个ssh-server使用唯一一对RSA key。这样可以防止一个private key泄漏后,只有一个ssh-server的ssh安全受影响,其他ssh-server不受影响(因为使用不同的RSA key)。

六. 与旧配置的区别

1. .ssh/目录在ssh-server/ssh-client端都没有权限要求,所以默认的755即可。

2. 上述配置均不需使用root权限,也不需要配置/etc/ssh/sshd_config(默认即可),更不需要重启ssh服务器。

最后,希望对大家有用哈。

时间: 2024-08-01 22:14:47

最新SSH自动登录方案(RSA)的相关文章

linux expect详解(ssh自动登录)

shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact 原文链接:http://www.xuanhao360.com/linux-expects/ Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成.形

shell脚本实现ssh自动登录远程服务器示例

本文转载自 懒惰的肥兔 :http://www.xuanhao360.com/linux-expects/ shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh [email protected] expect "*password:" send "123\r" expect "*#" interact Expect是一个用来处理交互的命令.借助Expect,我们可以将交互过程写在一个脚本上,使

使用public/private key让putty(ssh)自动登录

方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空,免得登录时还是要输入一次密码. 点击Save private key 按钮保存公匙和私匙,例如key.ppk,public key不用保存,以后使用Puttygen.exe Load功能就可以显示public key. 第二步:上传密匙 用自己的帐号登录linux主机,然后执行下面的命令: $ c

[转] windows 上用程序putty使用 ssh自动登录Linux(Ubuntu)

需求: 在Win7电脑上使用putty(一种ssh客户端)连接Ubuntu 工具: puttygen.exe 和 putty.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空,免得登录时还是要输入一次密码. 点击Save private key 按钮保存私匙,例如key.ppk: 复制puttygen public Key 文本框内的内容到剪贴板中. 第二步:上传密匙 用Pu

python paramiko模块SSH自动登录linux系统进行操作

1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh restart 2). pip install paramiko example 1: import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('

用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子

因为要对客户方的快30个项目进行特别有顺序的重启,所以不得不想办法写个脚本,网上看了不少段子.真是残缺的可以.没有一段是可以正常运行的.我来按顺序记录一下 脚本的本身 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ############################################## #!/usr/bin/expect set timeo

windows 上用xshell使用 ssh自动登录linux

说明:今天来了一个小伙伴,因为业务需要,要登录一台测试系统,问我密码是多少,我说我配置的密钥登录的,估计他不太熟悉,所以我简单的演示了一下配置过程给他看,顺便也记录了下整个配置过程. 1.关于密钥登录系统的原理 关于配置原理,可以参考https://help.aliyun.com/knowledge_detail/41493.html,现在阿里云的官方文档写的很详细,我也不想粘贴复制了. 2.服务端的配置过程 a)生成密钥对(这里我只是做个测试,所以一路回车就好了) [[email protec

ssh自动登录(免密)

创建公钥 1 ssh-keygen -t rsa 无视它出来的任何提示,欢快的一路回车到底吧~ 把公钥复制到远程主机 把公钥id_rsa.pub复制到远程机器的 /home/username/.ssh目录并命名为authorized_keys 1 2 3 4 5 # 方法1, os x 可以通过 `brew install ssh-copy-id` 安装 ssh-copy-id ssh-copy-id [email protected]; # 方法2 cat ~/.ssh/id_rsa.pub

sshpass或expect实现ssh自动登录

第一种方法(expect): cat expect.sh #!/usr/bin/expect #使用第一个参数  set local_ip [lindex $argv 0] #后面的也可以用参数[lindex $argv n] #set password [lindex $argv 1 ]   #set password2 [lindex $argv 2] #set command  [lindex $argv 3] set local_port 22 set local_user jackch