[toc]

SSH远程连接

SSH相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ssh(远程连接命令)
ssh 22 # 默认支持root登录,加密传输
telnet 23 # 默认不支持root登录,明文传输

# 语法格式
ssh -p22 root@10.0.0.61

## root@remotehost
## "@"前面为用户名,如果用当前用户连接,可以不指定用户
## "@"后面为要连接的服务器的IP

# 选项
-p # 指定连接远程主机端口,默认22端口可省略

# 退出返回当前主机
logout

# 不远程连接执行命令
ssh root@10.0.0.7 'ls -l /etc'
## 不能使用命令别名

ssh免密连接

概述

ssh免密连接(密钥对验证方式登录)

生成密钥将公钥发给指定用户,即可凭私钥免密访问此设备

密钥对操作

生成秘钥对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 生成秘钥对
ssh-keygen

# 将秘钥保存到文件中,可以指定其他路径(默认保存位置:/root/.ssh/id_rsa)
Enter file in which to save the key (/root/.ssh/id_rsa):

# 创建了密钥目录
Created directory '/root/.ssh'.

# 给密钥设置密码,不需要设置(直接回车)
Enter passphrase (empty for no passphrase):

# 重复输入的免密(直接回车)
Enter same passphrase again:
The key fingerprint is:
SHA256:GTt6UUY4ANrv3/zP9IllP67D6hWy2XeQ4Ulk3aAedeM root@m01
The key's randomart image is:
+---[RSA 2048]----+
| .... .. =+o|
| o o. =..+|
| . . ..o o oE |
| . * . + + |
| . S ...= |
| . . o = .. |
| o . o.o.+.|
| o o .==o+|
| . ++o+*o+|
+----[SHA256]-----

发送公钥给其他机器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 发送公钥给其他机器
-i:指定公钥位置
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.8
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.7

# known_hosts的作用
known_hosts
记录连接过的机器,如果没有连接过(第一次连接),需要输入yes

# 生成的过程
## 在远端的用户家目录下生成一个.ssh 的目录
ssh root@172.16.1.31 'mkdir /~/.ssh'
## 给'.ssh'目录授权700权限
ssh root@172.16.1.31 'chmod 700 /~/.ssh'
ssh root@172.16.1.31 'echo "ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCx9eQYkgy/Mgbz6iPxLWliT0alCSaICNWjsRUVL5w6OqZj57Qhxuo4Yy
/Gef7Nwzv23qA9blk2fE6E15AMRtPQfP4YO5Gxd66QlqBfn7WkR+SPdwMX/3ywZzfNnDxTFNl15Wsu5Z6NWEiL
bnXEyebKw9CZvzo9+q4WLjBCOPjMpE65k3DtANmmWm8Nn35StvaQGQA+vtMlwYERyitiqsT943HSG85JRC4zq7
tqS76jSTCgvZMyQey+2vc1Suxdemq0rX9MwaSKgTEXOZ/A02gi0ZPHiXIuW+1u8nGT31DSEK+WBJZC6gJsXaOP
12B/E51m4Lb3FKyLDUMZA5WB9no1 root@m01" > /~/.ssh/authorized_keys'
ssh root@172.16.1.31 'chmod 600 /~/.ssh/authorized_keys'

常用端口

1
2
3
4
5
6
7
8
9
10
# 常用端口	
ftp 21
dns 53
ssh 22
telnet 23
mysql 3306
http 80
https 443
nginx 80
rdp 3389

scp命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# scp
-r 递归
-p 保持文件属性
-P 大写指定port

# 语法格式
推 scp + 选项 源文件 用户名@IP:目录路径
拉 scp + 选项 用户名@IP:源文件 目标路径
scp root@172.16.1.7:/root/9 /tmp

# 总结
scp通过ssh协议的方式对文件或者目录拷贝
scp支持推拉数据,每次都是全亮备份,效率低