ssh远程服务器

实验要求

1.修改ssh服务器端口号

2.拒绝root账户远程登录

3.允许特定账户进行ssh登录,其它账户无法登录

4.ssh-keygen 免密登录

5.xshell使用密钥登陆

思路总结

修改ssh服务端口号,打开配置文件修改21行端口;拒绝root登录去掉配置文件及其子目录下的PermitRootLogin yes;允许特定用户登录,修改配置文件;ssh-keygen免密登录服务端产生公钥和私钥,客户端把公钥上传到服务端即可;xshell免密登录,在服务端创建空的公钥文件,之后打开shell创建公钥,把公钥复制在服务端的公钥文件中,最后使用xshell登录

实验步骤

1.修改ssh服务器端口号

服务端

yum install openssh-server 安装ssh服务

vim /etc/ssh/sshd_config 编辑ssh文件

复制代码
其中关键信息说明如下
		21.#Port 22  # 默认监听22端口,可修改
		22.#AddressFamily any  # IPV4和IPV6协议家族用哪个,any表示二者均有
		23.#ListenAddress 0.0.0.0 # 指明监控的地址,0.0.0.0表示本机的所有地址(默认可修改)
		24.#ListenAddress :: # 指明监听的IPV6的所有地址格式

		26.#HostKey /etc/ssh/ssh_host_rsa_key     # rsa私钥认证,默认
		27.#HostKey /etc/ssh/ssh_host_ecdsa_key   # ecdsa私钥认证
		28.#HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证


		34 #SyslogFacility AUTH  # ssh登录系统的时会记录信息并保存在/var/log/secure
		35.#LogLevel INFO   # 日志的等级

		39.#LoginGraceTime 2m   # 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
		40 PermitRootLogin yes # 允许管理员root登录 
		41.#StrictModes yes   # 是否让sshd去检查用户主目录或相关文件的权限数据
		42.#MaxAuthTries 6  # 最大认证尝试次数,最多可以尝试6次输入密码。
		                     之后需要等待某段时间后才能再次输入密码
		43.#MaxSessions 10   # 允许的最大会话数

		49.  AuthorizedKeysFile .ssh/authorized_keys # 选择基于密钥验证时,客户端生成一对公私钥之后,
		                                         会将公钥放到.ssh/authorizd_keys里面
		65 #PasswordAuthentication yes  # 登录ssh时是否进行密码验证
		66 #PermitEmptyPasswords no    # 登录ssh时是否允许密码为空

		......
		123.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接
		AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),
		                      允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

修改端口号

root@server \~\]# vim /etc/ssh/sshd_config 定位第21行,去掉# 后修改端口号 21 Port 2222

服务端操作,重启服务

root@server \~\]# systemctl restart sshd # 注意:ssh的服务名位sshd 注意:如果出现端口占用不能释放,使用如下命令测试一下: sudo semanage port -a -t ssh_port_t -p tcp 2222 执行此命令后,SELinux将允许ssh在tcp协议的备用端口上运行,从而确保了安全性和连接的稳定性。 ​ \[root@server \~\]# yum install net-tools # 安装网络工具才可使用netstat命令 ​ \[root@server \~\]# netstat -ntlp # 查看端口号是否已修改

客户端

客户端操作,ssh登录服务端

root@node1 \~\]# ssh root@192.168.48.130 登录服务端的ip地址

尝试登录被拒绝,22端口已关闭

以2222的端口号登录

复制代码
root@node1 ~]# ssh  -p  2222  root@192.168.48.130  # 指明以2222端口登录服务端

2.拒绝root账户远程登录

第一步修改服务器配置

root@server \~\]# vim /etc/ssh/sshd_config PermitRootLogin no # yes修改为no 同时修改: /etc/ssh/sshd_config.d/01-permitrootlogin.conf 中, PermitRootLogin no

第二步:服务端重启服务

root@server \~\]# systemctl restart sshd 重启ssh服务

第三步:客户端,测试

无法登陆

3.允许特定账户进行ssh登录,其它账户无法登录

服务端添加新账户

root@server \~\]# useradd test 创建新用户 \[root@server \~\]# passwd test 修改密码

服务端修改主配置文件

root@server \~\]# vim /etc/ssh/sshd_config AllowUsers test # 第一行添加

重启服务

root@server \~\]# systemctl restart sshd 重启ssh服务

客户端测试

root@node1 \~\]# ssh test@192.168.48.128 登录test用户

root@node1 \~\]# ssh root@192.168.48.130 # 测试其它账户可否登录 root@192.168.48.130's password: Permission denied, please try again

4.ssh-keygen 免密登录

服务端

ssh-keygen是用于生成、管理、转换密钥的工具

root@server \~\]# ssh-keygen -t rsa • 分析 ◇ -t:指定密钥类型 ◇ rsa:使用rsa公钥加密算法,可以产生公钥和私钥 ◇ 执行后会在对应账户目录中产生一个隐藏目录.ssh,其中有2个文件 ▪ id_rsa:私钥文件 ▪ id_rsa.pub:公钥文件

客户端

定位客户端,制作公私钥对

root@node1 \~\]# ssh-keygen -t rsa # 一路回车

将公钥上传到服务器端

root@node1 \~\]# ssh-copy-id root@192.168.48.130 # 输入服务端的账户及IP地址

注意:客户端将公钥上传到服务器端后,服务器端的/root/.ssh/authorized_keys文件会存储客户端的公钥数据

最后客户端免密测试

root@node1 \~\]# ssh root@192.168.48.130 客户端ssh免密登录

5.xshell使用密钥登陆

服务端

注意:先在服务器端检查/root/.ssh/authorized_keys是否存在,它是存储公钥的文件,若不存在需要新建

服务器端操作

root@server \~\]# cd /root \[root@server \~\]# ls -a \[root@server \~\]# mkdir .ssh \[root@server \~\]# cd .ssh \[root@server .ssh\]# vim authorized_keys 创建authorized_keys文件 # 有时需要注意.ssh目录的权限◇

客户端

打开xshell,新建密钥

设置密钥文件名加密密码(可不设)

产生公钥,并==另存为文件==

将windows中保存的公钥文件以==记事本==的方式打开,复制内容,

拷贝到Linux服务器端的/root/.ssh/authorized_keys文件中后保存退出

重启服务端服务

root@server .ssh\]# systemctl restart sshd 重启服务端ssh服务

打开xshell

点击==用户身份验证==,选择==Public Key== 方式验证登录,点击连接

成功

相关推荐
qinyia14 小时前
用 Wisdom SSH 轻松实现服务器自动化任务调度
服务器·自动化·ssh
qinyia1 天前
Wisdom SSH 是一款创新性工具,通过集成 AI 助手,为服务器性能优化带来极大便利。
服务器·人工智能·ssh
JCGKS1 天前
Docker|“ssh: connect to host xxx.xxx.xxx.xxx port 8000: Connection refused“问题解决
docker·ssh·端口·listen·tcp三次握手
fengfuyao9851 天前
诊断并修复SSH连接Github时遇到的“connection closed“错误
运维·ssh·github
高旭的旭1 天前
Gitlab 配置自定义 clone 地址
svn·ssh·gitlab·code
小猫挖掘机(绝版)2 天前
通过tailscale实现一台电脑上vscode通过ssh连接另一台电脑上的VMware Linux 虚拟机
linux·windows·vscode·ubuntu·ssh
方先森有点懒2 天前
CentOS 7.2 虚机 ssh 登录报错在重启后无法进入系统
linux·运维·centos·ssh
喜欢你,还有大家2 天前
SSH服务远程安全登录
运维·安全·ssh
qinyia2 天前
解锁服务器网络配置新姿势:Wisdom SSH 助力之旅
服务器·网络·ssh
三无少女指南3 天前
WSL2环境下因服务器重装引发的SSH连接问题排查记录
运维·服务器·ssh