Linux-ssh证书登陆(实例详解)

前言

本文基于实际Linux管理工做,实例讲解工做中使用ssh证书登陆的实际流程,讲解ssh证书登陆的配置原理,基于配置原理,解决实际工做中,windows下使用SecureCRT证书登陆的各类问题,以及实现hadoop集群部署要求的无密码跳转问题。html

ssh有密码登陆和证书登陆,初学者都喜欢用密码登陆,甚至是root帐户登陆,密码是123456。可是在实际工做中,尤为是互联网公司,基本都 是证书登陆的。内网的机器有多是经过密码登陆的,但在外网的机器,若是是密码登陆,很容易受到攻击,真正的生产环境中,ssh登陆都是证书登陆。linux

证书登陆的步骤

1.客户端生成证书:私钥和公钥,而后私钥放在客户端,稳当保存,通常为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密 码,之后每次登陆ssh服务器时,客户端都要输入密码解开私钥(若是工做中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。算法

2.服务器添加信用公钥:把客户端生成的公钥,上传到ssh服务器,添加到指定的文件中,这样,就完成ssh证书登陆的配置了。vim

假设客户端想经过私钥要登陆其余ssh服务器,同理,能够把公钥上传到其余ssh服务器。windows

真实的工做中:员工生成好私钥和公钥(千万要记得设置私钥密码),而后把公钥发给运维人员,运维人员会登记你的公钥,为你开通一台或者多台服务器的 权限,而后员工就能够经过一个私钥,登陆他有权限的服务器作系统维护等工做,因此,员工是有责任保护他的私钥的,若是被别人恶意拷贝,你又没有设置私钥密 码,那么,服务器就全完了,员工也能够放长假了。安全

客户端创建私钥和公钥

在客户端终端运行命令服务器

ssh-keygen -t rsa

rsa是一种密码算法,还有一种是dsa,证书登陆经常使用的是rsa。运维

假设用户是blue,执行 ssh-keygen 时,才会在个人home目录底下的 .ssh/ 这个目录里面产生所须要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)。ssh

另外就是私钥的密码了,若是不是测试,不是要求无密码ssh,那么对于passphrase,不能输入空(直接回车),要稳当想一个有特殊字符的密码。ide

ssh服务端配置

ssh服务器配置以下:

vim /etc/ssh/sshd_config
#禁用root帐户登陆,非必要,但为了安全性,请配置 PermitRootLogin no # 是否让 sshd 去检查用户家目录或相关档案的权限数据, # 这是为了担忧使用者将某些重要档案的权限设错,可能会致使一些问题所致。 # 例如使用者的 ~.ssh/ 权限设错时,某些特殊状况下会不准用户登入 StrictModes no # 是否容许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。 # 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys #有了证书登陆了,就禁用密码登陆吧,安全要紧 PasswordAuthentication no

配置好ssh服务器的配置了,那么咱们就要把客户端的公钥上传到服务器端,而后把客户端的公钥添加到authorized_keys

在客户端执行命令

scp ~/.ssh/id_rsa.pub blue@<ssh_server_ip>:~

在服务端执行命令

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

若是有修改配置/etc/ssh/sshd_config,须要重启ssh服务器

/etc/init.d/ssh restart

 

客户端经过私钥登陆ssh服务器

ssh命令

ssh -i /blue/.ssh/id_rsa blue@<ssh_server_ip>

scp命令

scp -i /blue/.ssh/id_rsa filename blue@<ssh_server_ip>:/blue

每次敲命令,都要指定私钥,是一个很繁琐的事情,因此咱们能够把私钥的路径加入ssh客户端的默认配置里

修改/etc/ssh/ssh_config

#其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已 IdentityFile ~/.ssh/id_rsa #若是有其余的私钥,还要再加入其余私钥的路径 IdentityFile ~/.ssh/blue_rsa

其余应用场景

SecureCRT密钥key远链接程ssh证书登陆Linux

  国内大部分人用的系统是windows,而windows下有不少ssh客户端图形工做,最流行,功能最强大的就是SecureCRT了,因此我会单独针对SecureCRT简单讲下实现ssh证书登陆Linux的要点,步骤以下:

  1:在SecureCRT建立私钥和公钥:主菜单->工具->建立公钥->选择RSA->填写私钥的密码->密钥长度填为1024->点击完成,生成两个文件,默认名为identity和identity.pub

  2.把私钥和公钥转换为OpenSSH格式:主菜单->工具->转换私钥到OpenSSH格式->选择刚生成私钥文件identity->输入私钥的密码->生成两个文件,指定为id_rsa,id_rsa.pub 

  3.把公钥id_rsa.pub上传到ssh服务器,按照以前配置服务器端的证书,再配置一次。

  另外,若是你以前用windows的 SecureCRT的证书登陆linux的,有一天你换成了linux,并但愿经过原来的私钥登陆公司的服务器,那么能够把id_rsa拷贝倒~/.ssh/目录下,配置ssh客户端参考上文。

  备注:ssh对证书的文件和目录权限比较敏感,要么根据出错提示设置好文件和目录权限,要么是把StrictModes选项设置为no

hadoop部署的无密码ssh登陆

hadoop要求master要无密码跳转到每一个slave,那么master就是上文中的ssh客户端了,步骤以下

   在hadoop master上,生成公钥私钥,这个场景下,私钥不能设置密码。

   把公钥上传到每一个slave上指定的目录,这样就完成了ssh的无密码跳转了。

总结

ssh证书登陆,在实际工做才是最经常使用的登陆方式,本人结合了真正工做的场景普及了ssh证书登陆的知识,并根据流行的hadoop部署和windows下最经常使用的SecureCRT实例讲解了证书登陆。

以上转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646346.html

 

如下为本人实际操做

测试环境客户端为Windows(Git Bash或cygwin), 服务端为Linux(虚拟机)

"公私钥"认证方式简单的解释:首先在客户端上建立一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)而后把公钥放到服务器上(~/.ssh/authorized_keys), 本身保留好私钥, 在使用ssh登陆时, ssh程序会发送私钥去和服务器上的公钥作匹配, 若是匹配成功就能够登陆了

1.在本地生成一对密钥(即公钥和私钥)

ssh-keygen -t rsa

执行完以下命令会在用户目录(本人的是C:/用户/John_ABC/)的.ssh目录下看到两个文件id_rsa(私钥, 放在这儿便可), id_rsa.pub(公钥, 放在要登陆的服务器的使用的用户的家目录的.ssh目录下)

2.将公钥复制到要使用Public Key登陆的服务端(此处就先复制到用户suiyongjie的家目录下), 此时(若是是首次访问服务端)还会在客户端用户家目录的.ssh文件夹下生成known_hosts文件, 来保存各个认证过的主机信息(即再次链接的时候再也不提示The authenticity of host 'xxx.xxx.xxx.xxx' can not be established)
scp ~/.ssh/id_rsa.pub suiyongjie@192.168.126.128:~/

3.此时会提示输入这个用户的登陆密码

4.输入密码后, 拷贝成功

5.使用ssh登陆到服务端, 此时在suiyongjie的家目录能够看到id_rsa.pub文件

6.若是在suiyongjie的家目录没有.ssh文件夹则新建

mkdir ~/.ssh
chmod 700 ~/.ssh

7.将刚才上传到服务端的id_rsa.pub文件中的内容添加到suiyongjie家目录/.ssh/authorized_keys中, 删除刚才上传到服务端的的id_rsa.pub

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

8.修改~/.ssh文件夹内文件的访问权限 权限的设置很是重要, 由于不安全的设置, 会让你不能使用RSA功能。

chmod 600 ~/.ssh/*

9.使用SSH私钥登陆服务器

ssh -i ~/.ssh/id_rsa suiyongjie@192.168.126.128

若是以上步骤不能实现不输密码登录的话,须要检查sshd服务的Pubkey认证功能是否默认打开修改/etc/ssh/sshd_config, 改如下条目PubkeyAuthentication yes

相关文章
相关标签/搜索