一、什么是SSH?
简单说,SSH是一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
需要指出的是,S

SH只是一种协议,存在多种实现,既有商业实现,也有开源实现。

 

SSH应用不仅仅局限于远程管理登录,其实它包括了三个组件,其中:

1.ssh 远程登录    SecureCRT 、Xshell、Putty;

2.sftp 文件共享(类FTP)  SSH Secure File Transfer Client;

3.scp 文件共享 (类cp).

 

二、SSH基本用法:

1.从一台Linux主机远程登录到另外一台服务器、或者登录到本机。

$ ssh user@host #-> ssh 用户名@远程主机IP

 

  如果本地用户名与远程用户名一致,登录时可以省略用户名。

$ ssh host

  

  如果ssh服务器使用了非默认端口例如2345,则客户机子在登录时必须明确指定。   

$ ssh -p 2345 user@host

 

      常用选项:  

        a: -2 强制使用第2代ssh协议

        b: -p 指定端口号

注意事项:前提是远程主机(目标主机)上必须有一个用户身份;

两个基本条件:a:空密码用户登录禁止

                            b:root登录禁止

2.用户的远程登录控制;通过修改/etc/ssh/sshd.conf 配置文件,可以进一步提高sshd远程登录服务的安全性。

      怎样禁止root登录:

[root@pxe_srv_3 ~]# vim /etc/ssh/sshd.conf
.........
.........
#PermitRootLogin  no  #->将注释符号删除、并将 yes 改为 no ,那样就会禁止root以ssh登录
.........
.........
~

   

   修改端口号:

[root@pxe_srv_3 ~]# vim /etc/ssh/sshd.conf
........
........
#Port 22 #->将注释去掉,改成非标准的端口号即可
........
........
改变端口号之后,在进行远程连接时指定改变过后的端口号:
[root@pxe_srv_3 ~]# ssh -p port user@远程主机IP

 

    限制用户登录验证过程的时间(默认为2分钟)及最大尝试数,若超过限制后仍未登陆则断开连接。

[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config
........
........
#LoginGraceTime 2m   #->超时时间
#MaxAuthTries 6      #->最大尝试数
........
........

 

     拒绝用户zhangsan、lisi远程登录系统,其他均允许

[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config
DenyUsers  zhangsan  lisi  #->在配置文件中添加此行内容.

 

     允许用户jerry登录系统,允许用户admin从主机59.151.110.110远程登录系统,其他用户拒绝(不要同时使用AllowUsers和DenyUsers配置)

[root@pxe_srv_3 ~]# vim /etc/ssh/sshd_config
AllowUsers  jerry  admin@59.151.110.110
admin@59.151.110.110

 

3.scp远程复制文件

从本机拷贝文件到远程主机:
scp  本地文件  用户名@远程主机地址:远程主机目标目录
scp -r 本地目录  用户名@远程主机地址:远程主机目标目录
从远程主机拷贝文件到本地:
scp   用户名@远程主机地址:远程目录  本地目录
scp -r  用户名@远程主机地址:远程目录  本地目录

 常用选项: -p:保持原文件属性

                    -r:复制目录

                    -P:指定端口号(ssh port)

举例分析:例如我们有台放在远端的Server,需要定期的备份该服务器上的/website目录;

  1.    contab -e

  2.     /usr/bin/scp -rp webadmin@192.168.10.28:/website  /backup/website_$(date +%F)

    虽然上面的操作思路是没有问题的,但是还是离不开人为的操作,故无法实现自动化执行,因为在你进行远程登录进行拷贝的时候需要手动输入用户webadmin的用户密码.那如何让两台主机之间建立一个信任关系呢?
    下面就运用到了加密的知识:
    对称密钥加密
    加密与解密使用同一密钥
    优势:速度快
    缺点:密钥本省需要交换
    非对称密钥加密
    也称之为公开密钥加密,使用时生成两个密钥,一个公开存放,为公钥;一个私人持有,为私钥。用户用其中一个密钥加密的数据只有用另一个才能解密。
    优势:安全性好
    缺点:速度慢
    所以加密信息时,通常是对称密钥加密非对称密钥结合使用
    用公钥加密,私钥解密 ---加密文件
    用私钥加密,用公钥解密 --数字签名

建立信任主机:

  1. 在客户端创建密钥对

    在本机(localhost)已root身份登录    

[root@pxe_srv_3 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  #->直接回车确认
Enter passphrase (empty for no passphrase):  #->此处设置密码短语(保护私钥文件)
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
3b:fc:c2:a9:fb:ba:1e:5d:1e:37:8a:2b:5e:82:1a:35 root@pxe_srv_3
[root@pxe_srv_3 ~]# ls -lh ~/.ssh/
total 12K
-rw------- 1 root root 1.7K Sep  1 06:22 id_rsa       #->私钥文件
-rw-r--r-- 1 root root  396 Sep  1 06:22 id_rsa.pub   #->公钥文件

b.   上传公钥文件给服务器:

[root@pxe_srv_3 ~]# scp /root/.ssh/id_rsa.pubwebadmin@192.168.10.28:/home/webadmin
#->运用scp上传公钥文件到服务器上webadmin的家目录;
webadmin@192.168.10.28's password:   #->此时还是需要远程服务器上webadmin用户的密码
id_rsa.pub                      100%  396     0.4KB/s   00:00
[root@pxe_srv_3 ~]#

c.    在服务器端以webadmin用户身份登录,将客户端公钥文件的内容添加至webadmin用户的授权密钥库

[webadmin@pxe_srv_001 ~]$ mkdir -p ~webadmin/.ssh  #->默认不存在,手动创建
[webadmin@pxe_srv_001 ~]$ cd /home/webadmin/
[weadmin@pxe_srv_001 webadmin]$ cat id_rsa.pub >> .ssh/authorized_keys
#->将公钥导入到授权密钥库文件authorized_keys.
[webadmin@pxe_srv_001 ~]$ ls -ld .ssh/
drwx------ 2 aa aa 4096 Aug 31 21:12 .ssh/
[webadmin@pxe_srv_001 ~]$ ls -ld .ssh/authorized_keys
-rw------- 1 aa aa 396 Aug 31 21:12 .ssh/authorized_keys
[webadmin@pxe_srv_001 ~]$

        由于sshd默认采用严格的权限检测模式(StrictModes yes),因此需要注意授权密钥文件authorized_keys的权限设置;所有者要求是登录的目标用户或root,同组或其他用户对该文件不能有写入权限。否则无法使用密钥验证成功登录系统。权限保持为600,  .ssh目录为700即可~

d.    使用密钥对验证方式登录服务器:

[root@pxe_srv_3 ~]# ssh aa@192.168.10.28   #->直接回车就登录成功.
Last login: Sat Aug 31 21:15:12 2013 from 192.168.10.24
[webadmin@pxe_srv_001 ~]$

 

未完待续....