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

成功

相关推荐
R.X. NLOS4 小时前
VS Code远程开发新方案:使用SFTP扩展解决Remote-SSH连接不稳定问题
运维·服务器·ssh·debug·vs code
我在看世界1 天前
家里vscode连公司内网vscede
vscode·ssh
电脑能手1 天前
[保姆级教程] 解决不同局域网电脑无法SSH的问题
运维·ssh·电脑
Charlene Fung2 天前
vs code远程自动登录服务器,无需手动输入密码的终极方案(windows版)
运维·服务器·vscode·ssh
小林up2 天前
github push:ssh: connect to host github.com port 22
运维·ssh·github
青芒亭2 天前
vscode remote-ssh 拓展免密访问 linux虚拟机
linux·vscode·ssh
一世一生命3 天前
Windows下Gitlab多账号(3个及以上)SSH配置
运维·ssh·gitlab
Lois_Luo3 天前
使用 DigitalPlat 免费搭配 Cloudflare Tunnel 实现飞牛系统、服务及 SSH 内网穿透教程
ssh·内网穿透
超龄超能程序猿3 天前
Bitvisse SSH Client 安装配置文档
运维·ssh·github