为sftp设置public key

Public Key认证是什么

这是一种认证方法,类似于常见的用户名密码认证方法。不同的是需要在客户端机器上保留一个很长很长的加密key,而在服务器端需要做出相应的配置。当客户 端想要访问服务器时,服务器则会检查自身配置并根据客户端所提供的用户名来识别客户端。说白了就是实现了无密码访问,并同时兼有安全保障措施。

 

认证过程简要说明

Public key对数据进行加密而且只能用于加密,Private key只能对所匹配的Public key加密过的数据进行解密。我们把Public key放在远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生一个随机数并用我们产生的Public key进行加密后发给本地,本地会用Private key进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论我们拥有匹配的Private key允许我们登录。

客户端配置

登陆客户端服务器,然后运行命令(不是在sftp命令下,就linux命令下允许)“ssh-keygen -t dsa”生成Public Key和Private Key

例如:

[root@SWEBVM000438 /]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /root/.ssh/id_dsa  (说明:这里输入放Public Key和Private Key的文件夹,可照抄给出的/root/.ssh/id_dsa)
Enter passphrase (empty for no passphrase): (不输入,直接回车)
Enter same passphrase again: (不输入,直接回车)
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
48:6a:bf:34:b7:ef:65:cf:e0:be:13:b9:c3:7c:ce:24 root@SWEBVM000438
The key's randomart image is:
+--[ DSA 1024]----+
|                 |
|                 |
|      .          |
|     o .         |
|    o . S    .   |
|   . .      o    |
|      + .  oEo.  |
|     . + . +*B.  |
|      . .oo.+*=  |
+-----------------+

 

服务器端配置

一、从目录/etc/或/etc/ssh/或/etc/conf.d/中找到sshd_config文件,并用vi编辑器打开
二、启用RSAAuthentication和PubkeyAuthentication,并同时指定authorized_keys文件位置,设置如下:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     ~/.ssh/authorized_keys
三、更新并保存sshd_config文件后,运行命令“service sshd restart”重新启动服务,不同版本Linux的服务启动方式见:http://theos.in/desktop-linux/tip-that- matters/how-do-i-restart-linux-network-service/
四、以上三步只是启用无密码验证功能,想要这个功能生效,还必须把客户端生成的Public Key配置到服务器的authorized_keys文件中去。把之前在客户端生成的id_rsa.pub文件内容拷贝到authorized_keys 中,如果有多个客户端,那么需要把每个客户端生成的Public Key都拷贝进来,注意换行,一个客户端一行。

测试

一、登录客户端,运行命令“ssh username@servername”,运行命令“ssh -vvv -o PreferredAuthentications=publickey username@servername”可以强制使用Public Key验证方法。
二、测试SFTP可以使用命令“sftp username@servername”

 

注意事项

.ssh目录的属主、属组使用当前用户与用户组
.ssh目录的权限请保持700
authorized_keys的权限为644
id_rsa的权限为600
id_rsa.pub的权限为644
检查用户$HOME目录权限必须为755

 

相关sftp命令

1、登陆:
格式:sftp <user>@<host>
sftp root@10.10.10.10 然后输入密码

2.查看sftp支持的命令

  使用help命令,查看支持的命令,如:

  sftp>help

   (其中命令前面有“l”表示本地执行,其他表示在所登录的远程主机上面执行)

3、文件下载
get /root/xxx/testlist.dat ./
将远程/root/xxx目录下的文件testlist.dat下载到本地当前目录文件夹中。

4、文件上传
put .bashrc  /root/xxx
将本地当前目录下的.bashrc文件传送到远程的sftp服务器的/root/xxx目录下。

5、pwd 查询远程主机的当前路径

6、查询列表:

格式:sftp>ls <查询列表的路劲>
例如:
sftp> ls /root/xxx
/root/xxx/test.DAT                                       
/root/xxx/BackUp                                                           

参考:http://blog.csdn.net/rcom10002/article/details/19069075

 

posted on 2016-01-22 17:19  爱学习的小灵子  阅读(2860)  评论(0编辑  收藏  举报