配置SSH PuTTY安全加密连接-Centos 5

作者 FarLee 2011年1月29日 1:05:25   ‖浏览(16,348)

半年前写了一篇关于SSH的文章《SSH代理Bitvise Tunnelier+Firefox扩展Foxyproxy》,最后被国内主机商告知为“网站存在非法内容”而关停远方博客两次。现在虽然将空间移到了国外,为了少惹这种是非,已将这篇文章设置为私有。有兴趣的朋友可以在google搜索标题,仍有曾转载过这篇文章的网站上留有蛛丝马迹。

这里讨论到关于SSH的东西,也是网络上遍地都有的内容,不涉及到使用ssh代理浏览国外twitter网站方面的东西,如果对这方面有兴趣的可以搜索月光博客的“SSH加密通道配置”文章,很详细介绍了如何使用putty和firefox浏览器设置代理服务器。

因为今天在Centos 5.5下通过putty生成public key 公钥和私钥配置SSH安全连接通道时,出现了一些问题,另外马上春节新年就到了没有时间更新博客,所以顺便记录下在特定环境中配置SSH的注意事项(服务器端 Centos 5.5 linux发行版,linode vps默认自带安装了ssh-OpenSSH,Windows xp 客户端使用putty连接)。

在linux或mac os系统中可以直接在终端terminal运行ssh命令连接到远程linux 服务器,如:

ssh root@12.34.56.78

PC在windows 系统中只能借助于putty类似的ssh客户端,安全连接到远程主机。SSH加密通道安全连接的验证方式有两种:一种是root等用户密码登陆验证;另外一种是使用密钥,下面分别介绍两种方法。

Putty使用密码验证登陆SSH

windows 用户首先需要下载PUTTY,下载完后运行PuTTY.exe

Putty 配置SSH在Session会话这里设置host name或ip,默认端口22,在Saved Sessions中输入会话名称之后点击Save,保存host name信息,然后点击Open。若第一次在某台电脑登陆的时候,putty会弹出一个确认对话框,显示了你连接到的这个远程linux主机的host key,rsa2key fingerprint,以防止其他主机非法伪装成目标远程主机。只要确认目标远程主机的rsa key和这里显示的互相匹配、一致即可。

ssh 登陆验证

那么在SSH没有连接之前如何查看远程linux主机的host key?linode vps 提供了一种Lish ssh的登录的方法,当自身vps上的SSH服务没有完善或SSH出现问题时,可以使用安装在linode 同一台物理服务器上的Lish SSH服务来运行ssh 命令。

首先在管理后台获取Lish 的ssh登录账号和密码,连接到Lish主机后(当然这时候也要求验证key是否匹配,可以从后台获取到这些key),再使用自身vps上的root等用户ssh远程登录服务器。SSH远程连接成功之后,运行命令生成公钥:

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

确认ssh_host_rsa_key.pub确实匹配,点击YES注册缓存。以后每次PuTTY客户端登陆SSH不再提示确认信息,同时每次都需要输入ssh用户名和密码验证。Centos 5 中linode vps 默认ssh配置文件运行以密码验证的方式进行远程登录和安全连接。如果有问题则要设置ssh配置文件”/etc/ssh/sshd_config”,如确认PasswordAuthentication 设置为yes。

PuTTY使用密钥对登陆SSH

SSH使用密码验证方式登陆每次都需要输入用户名和密码,如果使用密钥对则可以设置不用输入用户名和密码直接连接。这种方式的SSH配置过程如下:

远程Linux主机OpenSSH分发密钥

SSH密钥分发可以由远程服务器或客户端来进行。如由远程Centos linux 主机来分发密钥:

CentOs下使用ssh-keygen命令生成密钥,比如:

cantin@sodium:~> ssh-keygen -t rsa
Generating public/private rsa key pair.<<生成公钥/私钥 密钥对
Enter file in which to save the key (/home/cantin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):<<输入密钥保护码
Enter same passphrase again:<<再次输入
Your identification has been saved in /home/farlee.info/.ssh/id_rsa.<<私钥
Your public key has been saved in /home/farlee.info/.ssh/id_rsa.pub.<<公钥
The key fingerprint is:
f6:61:a8:27:35:cf:4c:6d:13:22:70:cf:4c:c8:a0:23 cantin@sodium

密钥对生成之后,将公钥写入到~/.ssh/authorized_keys 文件:

# cd ~/.ssh#
cat id_rsa.pub >> authorized_keys

将/home/cantin/.ssh/目录下的私钥id_rsa下载到本地Windows电脑。然后通过PUTTYGEN.EXE的load功能将它导出和PuTTY匹配的密钥文件格式。这个导出的新私钥作为PuTTY远程SSH登陆的验证私钥。

Windows 电脑PuTTY生成密钥对

当然也可以由windows 电脑上的PuTTY ssh客户端生成并分发密钥对。打开PUTTYGEN.EXE:

PuTTY 生成密钥对点击Generate,并将鼠标指针放在在”No key”空白处不断移动使密钥随机生成,鼠标停止移动,生成进度条也会停止。PuTTY 生成公钥/私钥
结束后,和前面一种方式一样,将生成的公钥通过各种方式写入到Openssh的authorized_keys文件中。如root用户不存在/root/.ssh/authorized_keys 目录及文件,需要先创建它,并赋予相应权限:

# mkdir ~/.ssh
# chmod 700 ~/.ssh
# vi ~/.ssh/authorized_keys
# chmod 644 ~/.ssh/authorized_keys

输入Key passphrase即私钥保护密码后点击Save private key保存私钥文件到本地windows 电脑。Key passphrase可以保护私钥,即使私钥泄露,也必须知道私钥保护码才能登陆SSH,不过设置了保护码之后,每次密钥验证登陆SSH都需要输入私钥保护码。

使用以上任意一种方式分发公钥和私钥完成之后,需要设置一下sshd服务器端的配置文件。

设置/etc/ssh/sshd_config配置文件

设置/etc/ssh/sshd_config将最前面的注释去掉或作修改:

PasswordAuthentication no
ServerKeyBits 1024
RSAAuthentication yes
PubkeyAuthentication yes;
AuthorizedKeysFile .ssh/authorized_keys

修改完SSH配置文件执行service sshd restart重启服务使设置生效。期间因为不清楚需要修改哪些设置,PuTTY登陆SSH出现了server unexpectedly closed network connection的问题,查看/etc/host.deny没有被阻止的ip并重启vps 后仍然不嫩能用公钥/私钥验证的方式登陆。这时候再用密码验证方式连接SSH出现“disconected: No authentication methods available”的错误提示,就只能使用前面介绍的Linode提供的Lish SSH 登陆功能。

最后重新生成使用PuTTY生成一对新的密钥,重启SSH服务可以了。最后一步比较简单,在PuTTY客户端上配置SSH远程登陆就可以安全连接了。

PuTTY 客户端设置密钥验证登陆SSH

1. 打开PUTTY.EXE客户端

2. Session:输入Host name或ip,默认port 22,Save sessions 填写一个会话名词(若以前已经设置过,直接选择会话名称后点击Load即可)。

3. Connection -> SSH -> Auth -> Private key for authentication 点击browse 导入上一步保存到本地的私钥文件(ppk后缀);

4. Connection -> Data -> Login details -> Auto-login username 填写root 等ssh帐户名

5. 返回Session,点击Save保存这些配置。

6. 点击Open,输入私钥保护密码即可安全连接上SSH。


“配置SSH PuTTY安全加密连接-Centos 5”文章评论(6)

  1. iptables 防火墙设置ssh不能登录

  2. 使用psftp传输文件时,也可以用ssh的公钥验证的方法,命令:open sessionname

  3. ssh 密钥连接远程主机出现Agent admitted failure to sign using the key的错误提示,将私钥id_rsa加入进去才可,在本地执行ssh -add

    • Great arctlie, thank you again for writing.

  4. What a pluesare to find someone who thinks through the issues

Trackbacks/Pingbacks

  1. VPS上默认安装了sendmail,php也启用了mail函数,OpenCart… « test

来说兩句