linux下ssh使用rsa认证教程[原创]

下面我们来对linux(centos)平台如何使用ssh的rsa认证功能来实现安全登录服务器的教程.为了安全我们一般不直接使用root这个用户,而使用其它用户来代替.如果需要root权限的时候,直接在服务器上进行su命令进行用户切换就可以了.

一.配置/etc/ssh/ssh_config文件

ServerKeyBits 1024 //# 注释取消,将768改为1024

PermitRootLogin no //# 注释取消,将yes改为no 禁止root登录
RSAAuthentication yes  //# 启用 RSA 认证
PubkeyAuthentication yes     //# 启用公钥认证
AuthorizedKeysFile     //# .ssh/authorized_keys   # 验证公钥的存放路径
PermitEmptyPasswords no   //# 取消注释,禁止空密码登录
PasswordAuthentication no //# 取消注释,禁止使用密码方式登录,有密钥谁还用密码啊
注意一下,在centos5.0之前SSH服务需要指明版本,#Protocol 2,1 把前面的注释取消,选择自己需要的版本就行了。

重启sshd服务

service sshd restart

说明:

如果想做到最大化安全链接,可以考虑在配置有双网卡的服务器上设置只允许内网链接SSH,方法很简单,
首先在/etc/hosts.deny文件最后一行添加一句sshd: ALL
然后在/etc/hosts.allow的最后一行加上一句sshd: 192.168.0.
然后保存退出。

二.生成密匙

使用Linux主机生成的密匙,这里使用的是sysadmin这个用户,如果是使用其它用户的话,请在相应用户的home目录下面的.ssh文件夹里进行操作.这里我们创建一个sysadmin用户.

#useradd sysadmin -g wheel
#passwd sysadmin
#su sysadmin


1、生成密匙

[sysadmin@localhost ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sysadmin/.ssh/id_rsa):
Create directory '/home/sysadmin/.ssh'.
Enter passphrase (empty for no passphrase):      #//在这里输入密钥的密码
Enter same passphrase again:                     #//再次输入密码确认
Your identification has been saved in /home/sysadmin/.ssh/id_rsa.
Your public key has been saved in /home/sysadmin/.ssh/id_rsa.pub.
The key fingerprint is:
4a:51:5e:8b:67:0a:e9:9f:b5:b6:c9:f0:94:43:38:e9 sysadmin@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|        . .      |
|       + o .     |
|      + o +      |
|     . o *       |
|      o S o      |
|     . + = o     |
|      . E *      |
|         * +     |
|          =      |
+-----------------+

2、将 /sysadmin/.ssh/id_rsa.pub改名为/sysadmin/.ssh/authorized_keys

#切换到sysadmin的home目录下的.ssh目录里.
[sysadmin@localhost .ssh]$ cd ~/.ssh
[sysadmin@localhost .ssh]$ ls -l
total 8
-rw-------. 1 sysadmin wheel 1743 Sep  3 09:58 id_rsa
-rw-r--r--. 1 sysadmin wheel  412 Sep  3 09:58 id_rsa.pub
[sysadmin@localhost .ssh]$ mv id_rsa.pub authorized_keys
[sysadmin@localhost .ssh]$ ls -l
total 8
-rw-r--r--. 1 sysadmin wheel  412 Sep  3 09:58 authorized_keys
-rw-------. 1 sysadmin wheel 1743 Sep  3 09:58 id_rsa
[sysadmin@localhost .ssh]$ chmod 400 authorized_keys 
[sysadmin@localhost .ssh]$ ls -l
total 8
-r--------. 1 sysadmin wheel  412 Sep  3 09:58 authorized_keys
-rw-------. 1 sysadmin wheel 1743 Sep  3 09:58 id_rsa


3、将私钥id_rsa拷贝到远程客户端

将id_rsa文件存放在U盘上或者其它地方.以便随时可以使用.
1)、如果远程客户端是linux,拷贝到远程客户端/root/.ssh/即可
2)、putty作为远程客户端

由于putty不能识别直接从服务器拷贝来的私钥,需要使用puttygen.exe进行格式转换
(1)、打开puttygen.exe –> Conversions –> Import Key

然后输入在服务器上生成密钥的时候的设置的密码


(2)、选择拷贝过来的私钥文件id_rsa
(3)、Save private key->id_rsa.ppk(也可以修改为其它名字,这里用了haohtml_ssh,保存私钥)


4、打开putty.exe
1)、Session –> Host Name (填写服务器地址或者域名)


2)、Connection –> SSH –> Auth (点Browse选择刚生成的haohtml_ssh.ppk)


3)、open
成功打开后出现如下提示:
login as: sysadmin #//这里输入sysadmin用户
Authenticating with public key “imported-openssh-key”

然后输入在服务器上生成密钥的时候设置的密码就可以了.

puttygen.exe和putty.exe文件下载地址见:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

转载请注明本文来自:http://blog.haohtml.com/archives/11214