一、Linux服务器端设置
- Linux安装openssh服务
apt install openssh-server openssh-client
- 配置ssh服务服务器
vim /etc/ssh/sshd_config # 在文件中添加所需配置
Port 8080
PubkeyAuthentication yes
PermitRootLogin yes
RSAAuthentication yes # 默认不存在
AuthorizedKeysFile .ssh/authorized_keys # ssh文件位置,此项默认设置相同
PasswordAuthentication yes # 是否使用密码认证
AuthenticationMethods publickey # 登录方法
- 监听端口:默认端口为22,可以通过更改
Port 22来修改。 - 允许或禁止root登录:通过
PermitRootLogin no禁用root登录,提高安全性。 - 密钥认证:为了提高安全性,可以启用公钥认证并禁用密码认证。设置
PubkeyAuthentication yes和PasswordAuthentication no。 - 监听地址:如果你只想让SSH在特定的IP地址上监听,可以设置
ListenAddress。 - 登录告警信息:可以通过
Banner指令指定一个文件,当用户登录时显示该文件的内容,作为安全警告或法律声明。
- 在Linux上开启ssh服务
# 使用 systemctl 或 sysvinit 或 /etc/init.d 管理服务
systemctl start/enable/status sshd
service sshd start/enable/status
/etc/init.d/ssh start/enable/status
# 开启服务/设置开机自启/检查服务运行状态
sudo netstat -tulpn | grep ssh # 查看SSH服务的监听端口
ufw allow 22/tcp # 确保防火墙规则允许SSH服务的端口(默认是22)
二、Windows客户端设置
- 配置ssh客户端服务
首先确保主机安装OpenSSH并已启动ssh服务, 在C:\Users\User\.ssh\config文件中进行配置:
Host 服务器主机名称
HostName 服务器IP地址
User 登录账户
Port ssh服务端口
PermitLocalCommand yes
PreferredAuthentications publickey
- 配置密钥登录
在命令行生成密钥,密钥对会保存到 C:\Users\User\.ssh 目录下,id_rsa为私钥,id_rsa.pub为公钥。
ssh-keygen
-b 指定创建密钥的长度位数
-e 读取OpenSSH的私钥或公钥文件
-f 指定用来保存密钥的路径及文件名
-i 读取未加密的SSH-v2兼容的私钥/公钥文件,在标准输出显示OpenSSH兼容的私钥/公钥
-l 显示公钥文件的指纹数据
-t 指定密钥创建的类型,SSH-v1可选的值为rsa1,SSH-v2可选的值为rsa或dsa,默认rsa
-r 显示指定主机公钥文件的SSHFP指纹资源记录
-q 静默模式生成
-v 详细模式生成
-N 指定一个新密语
-P 提供(旧)密语
-C 添加注释
-F 搜索known_hosts文件中指定的主机名,列出发现的任何事件
ssh-keygen -f C:\Users\User\.ssh\ubuntu -C "10008" -b 2048 -t rsa
- 将公钥配置到服务器内
客户端创建的公钥内容添加到服务器端的authorized_keys文件中。
# 方法一:使用命令
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.24.1.236
# 或
type $env:USERPROFILE\.ssh\ubuntu.pub | ssh -tt "root@192.168.13.155" "cat >> .ssh/authorized_keys"
# 方法二:登录服务器操作
ssh root@192.168.13.155
vim ~/.ssh/authorized_keys
# root用户为 /root/.ssh/authorized_keys,其他用户为 /home/用户名/.ssh/authorized_keys
# 若没有 /.ssh 文件夹,或 authorized_keys 文件,则手动创建,并且赋予文件权限:
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
- 免密登录服务器
ssh root@192.168.13.155