ssh:远程登录
telnet:远程连接协议 主机之间传输的数据是明文传输的 不太安全
ssh:远程连接协议 基于tcp/22端口,用于主机之间安全的远程连接 也可以实现主机之间数据拷贝,通过ssh协议建立远程连接,其连接传输的数据都是加密的,并且支持用户密码身份验证和秘钥验证
服务端 服务器 192.168.2.60
clinet 192.168.2.70
[root@localhost ~]# rpm -qa | grep ssh
[root@localhost ~]# netstat -anput | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1112/sshd
tcp6 0 0 :::22 :::* LISTEN 1112/sshd
firewalld dhcp sshd
客户端尝试登录服务端
[root@localhost ~]# ssh root@192.168.2.60
[root@localhost ~]# touch lalalal
[root@localhost ~]# ls
anaconda-ks.cfg lalalal 模板 图片 下载 桌面
initial-setup-ks.cfg 公共 视频 文档 音乐
[root@localhost ~]# exit
登出
Connection to 192.168.2.60 closed.
服务端
[root@localhost ~]# vim /etc/ssh/sshd_config #主配置文件
17 #Port 22 #端口
19 #ListenAddress 0.0.0.0 #监听的Ipv4的地址
37 #LoginGraceTime 2m #连接的超时时间 2m2分钟 2m没有操作就会自动断开
38 #PermitRootLogin yes #是否允许客户端使用root用户连接
#在实际环境当中一定要关闭root用户的远程登录
40 #MaxAuthTries 6 #客户端连接服务端时尝试连接的次数
41 #MaxSessions 10 #最大连接量 可以允许10个客户端连接
43 #PubkeyAuthentication yes #客户端连接服务端是否可以使用秘钥连接
禁止root用户登录 允许lisi这个用户登录
服务端:
38 PermitRootLogin no
39 AllowUsers lisi
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# systemctl restart sshd
client
[root@localhost ~]# ssh root@192.168.2.60
不能登录
[root@localhost ~]# ssh lisi@192.168.2.60
lisi@192.168.2.60's password:
[lisi@localhost ~]$
允许所有的client可以通过lisi用户登录,让192.168.2.70客户端可以通过zhangsan用户登录
服务端:
[root@localhost ~]# vim /etc/ssh/ssh_config
38 PermitRootLogin no
39 AllowUsers lisi zhangsan@192.168.2.70
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# systemctl restart sshd
client
[root@localhost ~]# ssh zhangsan@192.168.2.60
zhangsan@192.168.2.60's password:
[zhangsan@localhost ~]$
允许所有的client可以通过lisi用户登录,让192.168.2.网段客户端可以通过zhangsan用户登录
38 PermitRootLogin no
39 AllowUsers lisi zhangsan@192.168.2.0/24
38 PermitRootLogin no
39 AllowUsers lisi zhangsan@192.168.2.*
免密登录 秘钥认证
ssh的工作原理:
主控端生成一对秘钥,将公钥传递到远程主机上,当主控端想要连接远程
主机,远程主机会随机生成一串字符给主控端,主空端将这串字符加密,
发送给远程主机,远程主机使用公钥来解密,解密出的字符和自己的字符
一致,则主控端验证通过
client
生成一对秘钥
[root@localhost ~]# ssh-keygen
[root@localhost ~]# cd /root/.ssh/
[root@localhost .ssh]# ls
id_rsa id_rsa.pub known_hosts
server root免密登录
[root@localhost ~]# vim /etc/ssh/sshd_config
38 PermitRootLogin yes
39 #AllowUsers lisi zhangsan@192.168.2.0/24
44 PubkeyAuthentication yes
[root@localhost ~]# systemctl restart sshd
client需要把公钥传递到server
[root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.2.60^C
[root@localhost .ssh]# ssh-copy-id -i root@192.168.2.60^C
[root@localhost .ssh]# ssh-copy-id root@192.168.2.60
123.com
验证:
client:
[root@localhost .ssh]# ssh root@192.168.2.60
[root@localhost ~]# exit
登出
Connection to 192.168.2.60 closed.
如果想要重新生成秘钥
需要把client和server端的.ssh目录删除
client ssh-keygen
ssh-copy-id
ssh-add
server ssh-agent
之后才能免密登录
scp
cp复制
scp ssh+cp 远程拷贝
scp src user@ip:/dest 推送数据
A 192.168.2.60
B 192.168.2.70
A---B
A:
[root@localhost ~]# scp /etc/hosts root@192.168.2.70:/etc/
scp user@ip:/src /dest 拉数据
B:
[root@localhost ~]# scp root@192.168.2.60:/etc/hosts /etc/
-r 复制目录