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== 方式验证登录,点击连接

成功

相关推荐
Web3探索者8 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
开发者联盟league15 天前
安装pnpm
ssh
2601_9618752415 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
小小小花儿16 天前
SSH密钥配置(免密连接远程服务器)
服务器·ssh
m0_5261194016 天前
ssh key生成,gitee配置ssh
运维·gitee·ssh
qq_3384323716 天前
VSCode Remote-SSH 远程 Windows Server 卡死的排查与解决
windows·vscode·ssh
着迷不白16 天前
十、网络客户端工具curl, wget, ssh, scp, sftp, rsync
运维·网络·ssh
江畔柳前堤16 天前
github实战指南01-账号配置与 SSH 密钥
运维·人工智能·深度学习·ssh·github·pyqt·信号处理
相醉为友17 天前
Trae IDE WSL2/SSH 环境网络故障排查笔记
ide·笔记·ssh
c2385618 天前
git常见错误和ssh验证推送
运维·git·ssh