设备信息
主机名称 | IP地址 | 用途 |
test01 | 192.168.221.130 | 被远程连接(服务器) |
test02 | 192.168.221.131 | 使用远程连接(客户端) |
OpenSSH服务器
SSH(Secure Shell)协议
- 是一种安全通道协议
- 对通信数据进行了加密处理,用于远程管理
- 使用TCP协议
OpenSSH
- 服务器名称:sshd
- 服务端主程序:/usr/sbin/sshd
- 服务端配置文件:/etc/ssh/sshd_config
- 客户端配置文件:/etc/ssh/ssh_config
使用SSH远程连接
使用ssh命令连接
查看SSH服务状态
systemctl status sshd
Linux的SSH一般默认是启动的,如果没有启动,就先启动服务
systemctl start sshd
test02客户端连接test01服务器
ssh root@192.168.221.130
设置端口号
SSH默认端口号22,如果要修改端口号,在服务器端配置
修改配置文件,大概在17行,取消注释Port,并修改端口号
vi /etc/ssh/sshd_config
我这里将端口号修改为1234,还应确保端口号没有被占用
保存退出后重启服务
systemctl restart sshd
修改端口号之后,如果再次进行连接,则需要指定端口号
-p 此选项可以指定端口号
ssh -p 1234 root@192.168.221.130
设置不能登录root用户
root用户权限是非常大的,因此如果使用root用户就不安全,现在禁止使用root用户登录
编辑配置文件,大约38行,将PermitRootLogin后的yes改为no,并取消注释
vi /etc/ssh/sshd_config
保存退出后,重启服务
systemctl restart sshd
此时再使用root用户登录就无法成功,显示权限被拒绝,会让再次尝试,密码正确也无法登录,此处说一下,如果退出连接,使用exit命令即可
AllowUsers和DenyUsers
刚刚说了禁止root用户登录,那么如果有多个普通用户,可以使用AllowUsers和DenyUsers
AllowUsers :设置允许哪些用户登录
DenyUsers :设置禁止哪些用户登录
注意:这两个不可以同时使用,而且用户是一定要设置密码的,因为现在使用密码验证,必须要输入密码,后面会说密钥验证!!!!
给服务器新增k1,k2,k3三个用户,在配置文件内编辑,直接在末尾添加即可
vi /etc/ssh/sshd_config
AllowUsers
现在只允许用户k1可以登录,让k2在IP为192.168.221.133的主机上才可以登录
AllowUsers k1 k2@192.168.221.133
重启服务,然后尝试登录,可以看到,因为允许登录的用户没有k3,所以k3无法登录,那么k2为什么也无法登录呢,因为我们登录的IP不是配置的那个IP,所以自然也无法登录
DenyUSers
现在禁止用户k1,k2登录
DenyUsers k1 k2
退出保存后,重启服务,尝试登录,可以看到,只有k3用户可以登录
密码尝试
如果密码输入错误,系统会让再次尝试输入密码,可以自己设置最大尝试次数,此处防止被暴力破解
编辑配置文件
vi /etc/ssh/sshd_config
在大概第40行修改MaxAuthTries后的值,并取消注释,我这里改为5次,默认是3次
MaxAuthTries 5
这里大家自己尝试一下,我就不做演示了
密钥验证
远程登录除了密码验证,还可以使用秘钥验证
在客户端(也就是使用远程连接的主机)生成密钥,系统可能会提示你保存密钥的位置和是否设置密码短语。如果不需要密码短语(这样每次使用密钥时就不需要输入密码),直接按回车键即可
ssh-keygen
将公钥传输到服务器,将生成的公钥复制到被远程连接的主机上
root为连接的用户,192.168.221.130为被连接的主机IP地址
ssh-copy-id root@192.168.221.130
然后重启服务,使用root用户登录便不再需要密码
使用scp传输文件
传输文件使用scp命令
在客户端主机的根目录下创建一个test.txt,内容是hello
将这个文件复制到服务器主机的根目录下
scp /test.txt root@192.168.221.130:/
查看服务器的根目录,可以看到服务器的根目录下已经有了这个文件
ls /
那么反过来将服务器的文件拉取到本机也是一样的
现在把客户端根目录下的test.txt文件删除,再从服务器拉取这个文件到客户端根目录
#删除test.txt rm /test.txt #从服务器端拉取文件 scp root@192.168.221.130:/test.txt /
然后查看客户端根目录,test.txt文件又出现了
这是传输普通文件,那么如果是目录呢?
传输目录则需要加上-r选项
在客户端根目录创建一个目录test
mkdir /test
将这个目录复制到服务器的根目录下,可以看到,不加 -r 无法传输成功
scp -r /test root@192.168.221.130:/
查看服务器根目录,已经有了test这个目录
XShell
下载
在虚拟机中操作Linux系统,不是很方便,现在给大家分享一款工具
下载地址:家庭/学校免费 - NetSarang Website
下载的时候按照提示做即可
使用
连接到指定的主机IP即可 ,接下来就可以在这个窗口内操作我们的Linux主机了,同样需要输入用户密码
新建会话
1.单击页面左上角文件,然后点新建,下次连接便不用再输入IP和密码
2.设置会话属性,名称自己设置,我一般设置为IP地址,便于区分,主机就写要连接的主机IP地址,端口号默认是22
3.点击左边用户深粉验证设置登录的账号密码,然后点击确定
4.新建完成后左边会显示自己新建的会话,双击便可打开