SSH远程连接
一、SSH介绍
- SSH应用层协议
- 实现Linux主机加密、远程连接
- 适用于Linux服务器远程连接
- Telnet
- 远程连接,不加密
- 适用于局域网网络设备的远程连接
1、管理Linux服务器的方式
- 本地连接
- 安装系统、故障修复
- 远程管理
2、确保Linux服务正常启动ssh服务
1)确认ssh服务正常运行
[root@localhost ~]# ps -elf | grep ssh
4 S root 6541 1 0 80 0 - 28189 poll_s 09:55 ? 00:00:00 /usr/sbin/sshd -D
4 S root 6806 6541 0 80 0 - 39288 poll_s 09:56 ? 00:00:00 sshd: root@pts/0
0 S root 6851 6808 0 80 0 - 28177 pipe_w 10:20 pts/0 00:00:00 grep --color=auto ssh
[root@localhost ~]# netstat -tunlp | grep "sshd"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6541/sshd
tcp6 0 0 :::22 :::* LISTEN 6541/sshd
- ssh服务端口: 22/tcp
2) 对应服务端软件
[root@localhost ~]# rpm -qf /usr/sbin/sshd
openssh-server-7.4p1-16.el7.x86_64
3、客户端软件
- windows
- xshell
- secureCRT
- putty
- Linux
- ssh命令
[root@localhost ~]# which ssh
/usr/bin/ssh
[root@localhost ~]# rpm -qf /usr/bin/ssh
openssh-clients-7.4p1-16.el7.x86_64
二、ssh远程连接
1、ssh远程连接
# ssh 用户名@服务器地址
2、执行远程命令
[root@localhost ~]# ssh root@192.168.140.10 uptime
root@192.168.140.10's password:
10:33:44 up 38 min, 1 user, load average: 0.00, 0.01, 0.02
[root@localhost ~]# ssh root@192.168.140.10 ifconfig ens33
root@192.168.140.10's password:
3、远程拷贝文件
- scp
- rsync
- 增量拷贝工具
1) scp命令的使用
# scp 源文件 用户名@服务器地址:目录
[root@node01 ~]# scp /opt/file01.txt root@192.168.140.11:/tmp
[root@node01 ~]# scp root@192.168.140.11:/etc/passwd /tmp/
[root@node01 ~]# scp -r /opt/linux/ root@192.168.140.11:/tmp/
2) rsync命令的使用
- 确保所有Linux主机正常安装rsync软件
[root@node01 ~]# rsync -av /opt/python/ root@192.168.140.11:/tmp/
root@192.168.140.11's password:
sending incremental file list
./
1.py
10.py
2.py
3.py
4.py
5.py
6.py
7.py
8.py
9.py
sent 581 bytes received 209 bytes 225.71 bytes/sec
total size is 0 speedup is 0.00
[root@node01 ~]# rsync -av /opt/python/ root@192.168.140.11:/tmp/
root@192.168.140.11's password:
sending incremental file list
./
3.py
7.py
三、SSH怎么实现加密?
- 利用非对称加密算法
- ssh首次连接主机时,主机会自动发送自己的密钥,询问是否接受
- ssh密钥存储位置:
- ~/.ssh/known_hosts
1、数据加密
- 利用数学算法、密钥实现加密
2、数据加密算法
- 对称加密
- 非对称加密
3、对称加密算法
- 数据加密、解密使用的密钥是一样的
4、非对称加密算法
- 加密、解密时使用的密钥是不一样的
- 基于密钥对(公钥、私钥)
- 本质上就是利用特定的数学算法生成的随机数
- 公钥加密、私钥解密
四、免密SSH
1、ssh认证方式
- 基于用户名、密码的认证【默认】
- 基于密钥的认证
2、基于密钥的认证流程
- 在客户端生成密钥对
- 将公钥拷贝到服务器
3、配置免密SSH
1) 在客户端生成密钥对
[root@node01 ~]# 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:
SHA256:SWcLrku9sR+q5j5KgGP6vyhJeS/3LwZxzSs9hbKOecw root@node01.linux.com
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| = + |
| . . = O o |
|o.o o S + |
|o+ o . = + |
|o.. o X + o |
|o. + *oE = . |
| .o.**O+*o. |
+----[SHA256]-----+
[root@node01 ~]# ls /root/.ssh/
id_rsa id_rsa.pub known_hosts
2) 将公钥拷贝到服务器
[root@node01 ~]# ssh-copy-id root@192.168.140.11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.140.11's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.140.11'"
and check to make sure that only the key(s) you wanted were added.
- 自动将公钥拷贝到对方服务器用户家目录
- /root/.ssh/authorized_keys(公钥存放目录名)
3) 验证
[root@node01 ~]# ssh root@192.168.140.11 ifconfig ens33
4、注意事项
- 免密SSH基于用户
- 免密SSH是单向的
5、配置windows与Linux间的免密
1) 在windows生成密钥对
2) 将公钥拷贝到服务器
[root@localhost ~]# cat id_rsa_2048.pub >> /root/.ssh/authorized_keys
[root@localhost ~]# cat /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtQk+Kx4bafhFsSwZC09RQXT2UIux6KDOeXmzYxN+oZFrXqSIGHHforssyiEUqV9dfETmv6kYencgSsU37ecSpn/3QUVuTU6bu26zF4sSF/w+qYuylJ1TuDg5HsqpRWbrJ5Q8eGLg9lwozlCQ0lswLnxmAM1B66SJuY8Lsm1W9f5XBA/RweNiVJwFHoqLHTVwnn0/Gt/LdfL/LnqH+TxbSjnf9mRdBVtogsAITDCBqpzRDCW/XaBkmKOe9mXC/8rZ6saZdLyZKQXefl52Wdh9mYbRVvO32YTnTdLk1mQ3fwOotBlVIPMMrx2HLRIhQXP1L7q9U4f39uPIqYcT3rUvj root@node01.linux.com
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArrxv/vWwlcsBBNkYCQ0K07nqqDDbbd27eFRIrT+uX0SQ+i1dIXcBgNDf0Zt3nJw9n8bAnksiKxxC6OzRaCMIm/XDr8V75gd3DybeBXO7IVybA/OAr6LVRY5ehAI9OyqMPe6yUxRyekk6uV3KOattMeD2rya0JBTXnjgZjRqc4pApxdh4pAwZGGtaS447TLogLrdnfxAvcEp7dyXl5li/wPRRB2dHZEjyULErWl+R7+Li0nlz2TO790dqHYBcnqdmwMO5iCjIL5trVRqPAgf1HJ7N7/M298h8nCgYR0w80T/E7d/M9/H5x63UYGF/yck891G9tgtqkJsIgukEOXGudQ==[root@localhost ~]#
3) 验证
五、ssh服务配置
1、配置文件
- /etc/ssh/sshd_config
2、常用配置项
1) 修改ssh服务端口
- 一般不使用默认端口
Port 44444
[root@localhost ~]# systemctl restart sshd
2) 禁用密码认证
PasswordAuthentication no
3) 禁止root用户远程登录
PermitRootLogin no
4) 禁用DNS反解,加快ssh连接速度
UseDNS no