zoukankan      html  css  js  c++  java
  • SFTP/SSH/SCP访问设置Public Key认证(适用于centos heldebian)

    Public Key认证是什么

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

    认证过程简要说明

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

    客户端配置

    一、使用客户端的用户登录,然后运行命令“ssh-keygen -t dsa”生成Public Key和Private Key,例子如下:
    [root@someserver ~]# 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
    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:
    blah:blah:blah:blah:blah:blah:blah:blah:blah:blah root@someserver

    二、设置权限(root用户默认都OK的,新建其他用户后需要执行下)
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub

    服务器端配置

    一、从目录/etc/或/etc/ssh/或/etc/conf.d/中找到sshd_config文件,并用vi编辑器打开
    二、启用RSAAuthentication和PubkeyAuthentication,并同时指定authorized_keys文件位置,设置如下:
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile     ~/.ssh/authorized_keys(新建的用户要对应上)(但在debian中的~为%h不要改动,否则失败)
    三、更新并保存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中(当然这个文件要新建,如果不想新建,可以参考ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3),如果有多个客户端,那么需要把每个客户端生成的Public Key都拷贝进来,注意换行,一个客户端一行。

    测试

    一、登录客户端,运行命令“ssh username@servername”,运行命令“ssh -vvv -o PreferredAuthentications=publickey username@servername”可以强制使用Public Key验证方法。(如果无法验证通过请看下key的内容,因为有的是fqdn需要本地解析下)
    二、测试SFTP可以使用命令“sftp username@servername”

    注意事项

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

    转载于: https://blog.51cto.com/481814/1429512

  • 相关阅读:
    Java数据结构和算法总结-数组、二分查找
    Android开发必知--使用View.setId的正确姿势
    Fiddler基本用法以及如何对手机抓包
    Android学习笔记(十四)方便实用的首选项-PreferenceActivity
    Android学习笔记(十三)SharedPreference必须掌握的基础
    设计模式之单例模式
    关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
    ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
    使用Bootstrap的popover标签中嵌入插件,并且为插件注册事件实现Ajax与后台交互
    关于.Net使用企业库访问MySql数据库
  • 原文地址:https://www.cnblogs.com/leadership/p/11820014.html
Copyright © 2011-2022 走看看