SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进
行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP
欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的
速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一
个安全的“通道”。

1.ssh的key认证(本机生成KEY)
    所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(public key),
任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者
才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公
钥来猜测密钥却十分困难。
    ssh 的密钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥
和密钥。
  在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。

#######生成key###########
[test@foundation0 ~]$ ssh-keygen ###生成公钥和私钥的工具
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):『enter』 ###指定加密字符
保存文件,使用默认
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase): ###密码,必须大于4位
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is: ###确认密码
a5:4f:02:51:68:59:f4:e8:e3:c5:91:1f:6f:86:99:06 test@foundation0.ilt.example.com
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|      .*+        |
|      +. o .     |
|     .. . E .    |
|       o + + *   |
|        S + * +  |
|       . * . o   |
|        . .      |
|                 |
|                 |
+-----------------+
[test@foundation0 .ssh]$ pwd
/home/test/.ssh ###生成密钥存放位置
[test@foundation0 .ssh]$ ls
id_rsa  id_rsa.pub ####id_rsa位私钥,id_rsa.pub位公钥

2.使用key加密目标主机的目标用户
[test@foundation0 ~]$ssh-copy-id -i /home/test/.ssh/id_rsa.pub test@172.25.254.100

The authenticity of host '172.25.254.100 (172.25.254.100)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are
already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is t
o install the new keys
westos@172.25.254.100's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'westos@172.25.254.100'"
and check to make sure that only the key(s) you wanted were added.

ssh-copy-id     ####上传key的工具
-i     ####指定使用的公钥
/home/test/.ssh/id_rsa.pub #####使用公钥的名称
westos ####被管理的目标用户
172.25.254.100    ####被管理用户所在主机的ip

authorized_keys ###此文件在目标用户加目录的.ssh中,这个文件就是目标
用户被加密的标识,文件内容位公钥内容。

3.传文件(分发私钥)
scp /home/test/id_rsa client@12.23.21.23:/home/client/.ssh   #把当前主机中的id_rsa文
件推送到

4.远程文件传输:scp,rsync

ssh(远程shell)
sftp(软件)

scp ##远程复制
-v 显示进度-C 压缩传输选项-P 指定端口-4 强行使用 IPV4 地址-6 强行使用 IPV6 地
址-i 指定私钥文件路径-r 遍历路径复制-l 限制最大传输带宽,单位是Kb/s
scp file user@ip:/directory ##上传文件
scp -r dir user@ip:/directory ##长传目录
scp user@ip:/filename /direcotry ##下载文件
scp -r user@ip:/directory /direcotry ##下载目录


scp是复制新建的过程
rsync是镜像的过程(同步,不能同步链接)

rsync file|direcotry user@ip:/directory
rsync user@ip:/directory /directory
-r ##目录
-l ##不忽略链接
-p ##不忽略权限
-t ##不忽略时间戳
-g ##不忽略组信息
-o ##不忽略用户信息
-D ##不忽略设备文件

5.sshd服务的简单配置
systemctl restart sshd ###从新加载配置

5.1.修改/etc/ssh/sshd_config,具体如下:
Protocol 2  #只支持SSH2协议Port <端口号>  #修改默认端口号
MaxStartups 5    #同时允许5个尚未登录的SSH联机
MaxAuthTries  3   #最大登录尝试次数为3
ServerKeyBits 1024          #将ServerKey强度改为1024比特
PermitEmptyPasswords no     #禁止空密码进行登录
ChallengeResponseAuthentication no #禁用s/key密码
UsePAM no                   #不通过PAM验证
PermitRootLogin no           #禁止root远程登录
PasswordAuthentication no   #不允许密码方式的登录
RSAAuthentication no         #不允许RSA认证,只针对SSH1
PubkeyAuthentication yes     #允许公钥认证
AuthorizedKeysFile .ssh/authorized_keys #保存公钥的认证文件
UsePrivilegeSeparation yes    #用户权限设置
SyslogFacility AUTH #记录SSH登录情况
LogLevel INFO    #记录等级为
INFOPrintMotd yes    #登录成功后显示/etc/motd 文件的内容
PrintLastLog no   #不显示上次登录信息
Compression yes    #是否压缩命令
KeepAlive yes    #防止死连接
StrictModes yes   #接受连接请求前对用户主目录和相关的配置文件进行宿主和权限
检查
UseDNS no  #不使用DNS反解
AllowUsers <用户名>  #允许通过远程访问的用户,多个用户以空格分隔
AllowGroups <组名>   #允许通过远程访问的组,多个组以
空格分隔
DenyUsers <用户名>   #禁止通过远程访问的用户,多个用户以空格分隔
DenyGroups <组名>    #禁止通过远程访问的组,多个组以空格分隔

5.2、如果需要限制来路IP的话,可以修改/etc/hosts.deny和/etc/hosts.allow两个文件,
通过添加sshd:来限制或允许SSH远程链接IP。