Linux 服务_SSH
介绍
ssh
是一种用于安全远程登录和其他网络服务的协议。它是目前在 Linux 和类 Unix 系统中远程管理最常用的方式。通过ssh
,可以加密地连接到远程主机,执行命令、传输文件、进行端口转发等操作。
开启服务
命令
systemctl start ssh
验证,系统开启
22
端口证明ssh
服务启动。
配置文件
/etc/ssh/sshd_config
开启开机自启
systemctl enable ssh
windows 连接 kali Linux
- 命令(打开 Windows 的 cmd 终端)
ssh 用户名@kali的IP地址 #第一次连接需要主动输入 yes,往后不再需要。
exit #退出连接
centos 连接 kali Linux
- 同 windows 连接 kali Linux 相同。
第三方 ssh 客户端连接 kali Linux
原理相同,在对应位置输入主机 IP、用户、密码等即可连接。
一些软件列表
名称 平台 特点说明 WindTerm Windows/Linux/macOS 高性能终端模拟器,支持 SSH、Telnet、串口、SFTP,UI 现代、启动速度快 PuTTY Windows/Linux 经典老牌,轻量级,支持 SSH/Telnet/Serial OpenSSH 全平台 官方标准工具,Linux/macOS 默认自带,Windows 10+ 也可启用 Termius (Free) 全平台 现代化界面、跨平台同步(免费版功能有限) Xshell Windows 免费用于个人,商业用途需授权,功能全面
无密码,公钥登陆
功能:在 Linux 系统中配置 无密码 ssh 公钥登录,可以让不输入密码的情况下远程登录服务器,是一种更安全、自动化程度更高的方式。
原理:
- 首先生成密钥对(遵循非对称加密算法(如 RSA、ED25519 等)),公钥可以公开,私钥必须保密。
- 公钥置于服务器,私钥在本地。
- SSH 客户端 向远程服务器发起连接请求。
- 远程服务器检测到该用户的
~/.ssh/authorized_keys
中存在公钥。 - 服务器从该公钥中提取加密信息,向客户端发出一个 加密挑战(challenge)。
- 本地 ssh 客户端 使用私钥对该挑战进行解密或签名(证明自己持有正确的私钥)。
- 服务器验证签名是否与公钥匹配。
- 如果匹配,则认证通过,允许登录;否则拒绝。
生成密钥
ssh-keygen -t rsa #用 rsa 生成密钥对
公钥位置
- 将公钥保存到
/root/.ssh/authorized_keys
cat /home/kali/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
- 将公钥保存到
私钥传输
切换目录到文件
id_rsa
所在的目录。通过
python -m http.server
命令,在当前目录开启 8000 端口用于其他客户端对文件的下载。在客户端上执行命令下载私钥。
wget http://kali的IP地址:8000/id_rsa
修改私钥权限登陆
如上图所示,表明私钥权限不对,无法无密码登陆,需要修改私钥权限。
chmod 600 id_rsa
修改私钥权限为 600 即可成功实现无密码登陆。
Windows cmd 无密钥登陆
同样可以通过在服务端的
python -m http.server
命令进行私钥的传输。开启服务后,直接在 Windows 上的浏览器下载(http://服务端IP地址:8000/id_rsa)即可。
下载后登陆发现同样会显示
bad permissions
,表面私钥权限不正确,需修改。在 Windows 修改私钥权限步骤:
- 右键私钥文件的 属性 进入属性选项栏。
- 单击 安全,进入后单击 高级 进入高级安全设置界面。
- 单机 禁用继承,并在弹出的复选框中选择“从此对象中删除所有已继承的权限”。
- 随后单机 添加,在弹出的权限项目框中单击 选择主体 添加对象。
- 添加的对象可以通过在 cmd 中使用
whoami
命令查询,添加成功后单机 检查名称(若成功,则名称下方会出现一条横线)。 - 最后一路确定即可修改完成。
此时再次尝试在 cmd 中无密钥登陆即可成功。
第三方 ssh 客户端无密钥登陆
- 新建会话。
- 在输入密码的复选框中选择修改好权限的密钥文件即可(各个第三方 ssh 客户端原理大体相同)。
- 此时即可实现无密钥登陆。