OpenSSH的应用

OpenSSH

   ssh:Secure SHell,

   telnet(安全缺陷)→ssh v1(安全缺陷)→ssh v2

   ssh工作在TCP/IP的第五层,属于应用层协议,所以这个服务可以跨平台使,形同http服务一样。


ssh服务分为服务器端的sshd和客户端的ssh。

windows ssh client:

   Xmanger→Xshell ,较流行

   Securecrt

   putty

   sshclient


OpenSSH的用户认证:

   基于口令的认证:username/passwd

   基于密钥的认证:username


基于口令的认证:

   在客户端第一次向服务器发起请求时:

   1、客户端向服务器端发起请求。

   2、服务器端会发送一个主机公钥(还有服务器的特征信息)到客户端。

       客户端接受主机公钥后,就表明认可此服务器。

   3、客户端生成一个一次性密钥到服务器端。

   4、服务器端下面就通过对称密钥的方式索要密码。

注:客户端与服务器端连接后,

   在客户端的家目录下面会生成".ssh"的隐藏文件夹,

   其中包含know_hosts文本文件,记录了所有连接过的主机的IP和RSA公钥信息。


基于密钥的认证:

   客户端登陆之前的私钥需要自己保留,而公钥也不能公开,而是发送到服务器端要登陆用户的

   家目录下的".ssh"目录下

客户端用自己的私钥解解密,这时所有的认证都是基于密钥进行的,不需要密码


/etc/ssh/目录下:

   sshd_config:服务器端配置文件

   ssh_config :客户端配置文件


   ssh v1     :由于有漏洞,用的不多

   ssh_host_key, ssh_host_key.pub(主机私钥、主机公钥)


   ssh v2     :流行的

   ssh_host_dsa_key       dsa私钥(为保证兼容性而提供的)

   ssh_host_dsa_key.pub   dsa公钥

   ssh_host_rsa_key       rsa私钥(rsa安全性和功能强于dsa)

   ssh_host_rsa_key.pub   rsa公钥


配置文件/etc/ssh/sshd_config:

   使用"#"注释掉的行属于默认配置,如需要更改,则可以去掉注释"#",然后更改配置值。

   查看配置手册:man  sshd_config

#LoginGraceTime 2m    :登录宽限时间,在等待输入密码的时间,不能太长。
#PermitRootLogin yes  :默认允许root用户登录
#StrictModes yes      :启用严格模型。
#MaxAuthTries 6       :密码的最多尝试次数
#MaxSessions 10       :对来自同一客户端最多允许打开多少会话
#RSAAuthentication yes      :启用基于密钥的认证
#PubkeyAuthentication yes   :启用基于公钥的认证
#AuthorizedKeysFile     .ssh/authorized_keys
                            :认证文件的存放位置
#AuthorizedKeysCommand none :认证时的命令
#AuthorizedKeysCommandRunAs nobody
#RhostsRSAAuthentication no :基于主机的认证,不安全,所以关闭。
PasswordAuthentication yes  :基于密码的认证
ChallengeResponseAuthentication no
                            :挑战式单向认证,不安全,关闭
X11Forwarding yes           :在客户端可以执行服务器端的窗口程序
#PrintMotd yes        :登录时要显示的内容。类似于issue
#PrintLastLog yes     :显示上次登录的地方、时间,不安全,建议关闭。
#TCPKeepAlive yes     :使用TCP的长连接。
#UseDNS yes           :在连接时进一步判断对方的主机名和ip地址是否一致。如果不能够解析,会一致卡在此处。建议关闭。
#Banner none          :显示文件的信息,例如Banner  /etc/issue


配置文件修改改动的地方:

   1、监听端口一定改为非22端口;同时可以honeypot的蜜罐程序监听在22号端口进行跟踪。

   2、启用基于密钥认证的功能;

   3、禁止使用version 1;

   4、禁止主机认证机制;默认即为禁止;

   5、禁止DNS反解;

   6、禁止显示LastLogin;

   7、显示banner以提示用户;但在banner中勿显示敏感信息;


ssh命令的使用:

   ssh HOST: 如果没有指定用户名,以登录到当前主机上的用户名为用户登录远程主机;

   ssh username@HOST

   ssh -l username HOST

   ssh username@HOST 'COMMAND'  在远程主机上执行一个命令,并把结果取回本地。

       -p port

scp命令:

   基于ssh协议,在主机之间实现安全复制的工具:

   scp  [-r] SOURCE  DESTINATION      

   scp [email protected]:/root/install.log /root/

       将远程主机中/root/install.log文件复制到本地的/root目录下

   scp /root/ks.cfg [email protected]:/root/

       将本地/root/目录下的ks.cfg文件复制到远程主机的root目录下


linux中基于密钥认证的步骤:

   1、在客户端本地生成一对密钥

      #ssh-keygen -t rsa

           -P:指定密钥文件的加密密码,别人查看时需要输入此密码

           -f:直接指定密钥文件的存放位置(默认交互式指定,而且默认放到~/.ssh/中)

           -t:指定算法为rsa、dsa等。

   2、将公钥(id_rsa.pub)传输至远程服务器主机

      #ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

       ssh-copy-id命令会在服务器端的家目录下创建.ssh,

      并将其权限设置为700,且将id_rsa.pub更名并上传到210的/root/.ssh/authorized_keys,

      并且其权限为600.

      如果不使用ssh-copy-id命令,则需创建.ssh目录并更改权限,且需要更改公钥的名称、权限

   注:如果需要认证多个主机,其公钥是追加到~/.ssh/authorized_keys。

       且这种认证是单向的,如果需双向,需要重新来过。


windows客户端Xshell中基于密钥的认证连接:

   1、Tools→User Key Generation Wizard..(密码生成向导)→

       Key Type:[RSA]、Key Length:[1024]→

       Key Name:id_rsa_2048、同时可以输入密码→

       Public Key Format:SSH2-OpenSSH→Save as a file保存公钥

       注:如在上一步没有保存公钥文件,则可在提取私钥后,手动生成公钥。

   2、手动上传公钥文件至服务器,然后更名为~/.ssh/authorized_keys,权限为600.

       这样在使用Xshell登录时可以选则使用公钥登录。


你可能感兴趣的:(openssh)