首页 » IT » ssh自动登陆

ssh自动化登录

ssh证书使用一对密钥,private key/public key。

ssh-keygen
生成密钥的工具。
id_rsa
私钥(id_TYPE, 这里加密算法是RSA)。
id_rsa.pub
公钥(id_TYPE.pub)。

将公钥复制到Server的~/.ssh/authorized_keys文件。这样ssh/scp时就不用输入密码。

如果重命名id_rsa文件,则需要在ssh/scp时用-i指定私钥文件。

操作流程

Step1 生成密钥。输入命令后一路回车即可

ssh-keygen -t rsa

生成 ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub

Step2 把公钥(id_rsa.pub)复制到远程机器

scp ~/.ssh/id_rsa.pub user@server:/tmp

Step3 登录远程机器

ssh user@server

Step4-1 在远程机器操作

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

Step4-2 如果是首次生成authorized_keys文件,则必须修改其访问权限

chmod 600 ~/.ssh/authorized_keys

注意,如果id_rsa对其他用户或组用户有读写权限,则ssh/scp仍然需要输入密码

-rw-rw-r-- 1 bailing bailing 806 Aug 12 13:48 authorized_keys   # 不能远程命令
-rw-r--r-- 1 bailing bailing 806 Aug 12 13:48 authorized_keys   # ok,其他用户不能有可写权限

另注意,~/.ssh这个路径本身,也应防止其他用户可写,否则ssh/scp仍然要输入密码:

drwx------  2 bailing bailing     4096 06-21 09:32 .ssh

Putty自动登录

Putty是Windows下流行的开源SSH客户端工具。默认情况下,需要用户名、密码登录远程服务器。自动登录流程如下:

1. 生成密钥

Step 1 - 下载puttygen.exe,用于生成密钥。

Step 2 - 运行puttygen.exe,生成密钥(key保持默认选择的SSH-2 RSA即可)。生成密钥的过程中,puttygen.exe会提示你移动鼠标以增加密钥的随机性。

Step 3 - 密钥生成完成后,保存成文件(选择Save Private Key按钮),例如保存为:c:\bailingpc.ppk。

2. 配置远程服务器

用Putty登录远程服务器。复制c:\bailingpc.ppk中的公钥字串到~/.ssh/authorized_keys

c:\bailingpc.ppk的内容如下:

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20130604
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIB8bOjr7mcwMFEooDCZHXdpnu+AqIKyvQbFmLR7
4NV1H3PFEQjoFO7yQTs26WwO1ee5OaCtOl5EMRnlj4sxjb9JCYQYtfsoFc+Fe74x
wlsK72RXWJX8tyO3lVjFsZk7bPUhn2WHurU0ch/PcLxMtJkIDDmliRiVKHCC/NRm
nXQmZw==
Private-Lines: 8
AAAAgAa5x2ay8NIsIBAIqK5UnqvDZuRcIr2NrVbJ++sFO/h+PZvzFTz6Nm31sCx7
UfL2zkFdD5qu1KslP6uLNjoHqXl+flA6Ljcu1fWD5lFVsIHAzCgABYMHWSnv6xCu
NOaK/81jCGz3sMYMIV3nLE8j6HAp7/jfx1EfcTaSLyztDtvdAAAAQQC7j3t8s2vl
dw7Q6UsH5Xr0+Hq9QinkJ8MRXEcPg6b6LJHWCbyYcIYNKboTrobideb7pyIONU2V
FqLXcLIC8DgTAAAAQQCp09EF8L9N4jiisAYJNC+Lqvia7drLCmytf8oLQutnTDgh
P+s7/l6EjMwoWg251wYIuwdO++rNq26U+vV48QrdAAAAQDshOOAHqBSBWWbthlIo
ExungTQT0SBiU9QV98JbXZYgi3cpemlEUKBXVH5r27OLnWd05ijt3QR3j1dTEvn1
XxY=
Private-MAC: 77540812e42c9e3249e3f0de654e97f03f95a125

复制Public-Line: 4Private-Lines: 8之间的4行即可。

打开~/.ssh/authorized_keys,粘贴之。这里注意几点:

  1. 先添加" ssh-rsa "这个字串,注意前后有空格。
  2. 复制公钥后,要删除所有的换行符,把公钥字串连接成一个单行。

最后注意检查~/.ssh/authorized_keys的权限是0666:

$ ls -l ~/.ssh/authorized_keys
-rw------- 1 bailing bailing 1012 6月   4 10:20 /home/bailing/.ssh/authorized_keys

3. 配置Putty

Step 1 - 选择Connection -> Data,输入自动登陆的用户名。

Step 2 - 选择Connection -> SSH -> Auth,选择私钥文件(即第一步生成的c:\bailingpc.ppk)。

Step 3 - 在Session中选择Save,保存这些配置。

最后运行putty.exe,可见无需用户名密码:

如果你熟稔Putty,那以上流程可以帮助你配置无密码登录;如果你刚接触Putty,那这篇文章更完备地描述了这个配置的全过程。

分享

0