首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
软件添加id功能按钮
760 阅读
2
v2ray节点搭建
727 阅读
3
typecho非常有特色的模块
548 阅读
4
QQxml消息卡片生成源码
502 阅读
5
网易云音乐歌单ID获取教程
471 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
flutter
springboot
安卓
rust
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
rpc
尽意
累计撰写
101
篇文章
累计收到
39
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
2
篇与
的结果
SSH 公钥认证登录
1. 什么是 SSH 公钥认证?SSH(Secure Shell)是一种用于安全远程登录的协议,而公钥认证是一种基于非对称加密的身份验证方式,相比密码认证更加安全可靠。公钥认证的核心思想是:服务器保存用户的 公钥(public key)用户使用 私钥(private key) 进行身份验证服务器验证私钥是否匹配公钥,从而决定是否允许登录2. SSH 密钥对的生成在客户端(例如 Linux/Mac 终端或 Windows 的 Git Bash)执行以下命令生成 SSH 密钥对:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"参数解析:-t rsa:指定密钥类型为 RSA(推荐使用 ed25519 代替 rsa)。-b 4096:指定 RSA 密钥长度为 4096 位(默认 2048 位)。-C "your_email@example.com":为密钥添加注释,便于管理。执行后输出示例:Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa):默认情况下,密钥会存放在 ~/.ssh/ 目录下:私钥:~/.ssh/id_rsa(需妥善保管,切勿泄露)公钥:~/.ssh/id_rsa.pub(可安全分发给服务器)3. 配置服务器以支持公钥认证3.1 将公钥添加到服务器使用以下命令将公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip如果 ssh-copy-id 不可用,可以手动执行:cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"3.2 修改 SSH 配置文件确保服务器的 SSH 配置允许公钥认证,编辑 /etc/ssh/sshd_config 文件:sudo nano /etc/ssh/sshd_config找到并修改以下参数(如果没有,请手动添加):PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 关闭密码登录,增强安全性保存并退出后,重启 SSH 服务:sudo systemctl restart sshd # CentOS / Ubuntu sudo service ssh restart # Debian / older systems4. 使用 SSH 密钥进行登录配置完成后,即可使用 SSH 密钥登录服务器:ssh -i ~/.ssh/id_rsa user@server_ip如果你已经将私钥默认保存在 ~/.ssh/ 目录,并命名为 id_rsa,则可以直接使用:ssh user@server_ip5. 使用 SSH 登录别名为了方便管理多个 SSH 服务器,可以在 ~/.ssh/config 文件中定义别名。5.1 编辑 SSH 配置文件nano ~/.ssh/config5.2 添加以下内容Host demo HostName server_ip User demo IdentityFile ~/.ssh/id_rsa Port 22 # 可选,若更改 SSH 端口需指定5.3 直接使用别名登录ssh demo6. 其他增强安全性措施6.1 禁用 root 直接 SSH 登录修改 /etc/ssh/sshd_config 文件,找到以下行:PermitRootLogin no然后重启 SSH 服务。6.2 使用 Fail2Ban 进行 SSH 防爆破安装 Fail2Ban 防止暴力破解:sudo apt install fail2ban # Ubuntu/Debian sudo yum install fail2ban # CentOS启动并启用 Fail2Ban:sudo systemctl enable fail2ban sudo systemctl start fail2ban6.3 修改默认 SSH 端口在 /etc/ssh/sshd_config 文件中修改 Port 参数:Port 2222 # 更换默认 22 端口然后重启 SSH 服务:sudo systemctl restart sshd
2025年02月08日
58 阅读
0 评论
1 点赞
使用 SSH 端口转发实现内网穿透
SSH 端口转发是一种高效、安全的方式,可以将本地服务暴露到远程服务器,或者将远程服务映射到本地。SSH 端口转发的类型本地端口转发 (-L) 将远程服务器上的服务映射到本地端口,用于访问远程服务。ssh -L [本地地址:本地端口]:[远程地址:远程端口] user@your-server示例:ssh -L 8080:localhost:80 user@your-server本地 8080 端口映射到远程服务器的 80 端口。本地访问 http://localhost:8080,即访问远程服务器的 http://localhost:80。远程端口转发 (-R) 将本地服务映射到远程服务器的端口,用于将本地服务暴露到外网。ssh -R [远程地址:远程端口]:[本地地址:本地端口] user@your-server示例:ssh -R 0.0.0.0:8888:localhost:8080 user@your-server远程服务器的 8888 端口映射到本地的 8080 端口。外部访问 http://your-server:8888,即可访问本地的 http://localhost:8080。动态端口转发 (-D) 将本地端口作为 SOCKS 代理,用于动态访问任意远程服务。ssh -D [本地地址:本地端口] user@your-server示例:ssh -D 127.0.0.1:1080 user@your-server本地 127.0.0.1:1080 作为 SOCKS 代理,可通过浏览器等工具配置访问外网。配置 /etc/ssh/sshd_config 文件为了使远程端口转发(-R)正常工作,可能需要修改远程服务器的 SSH 配置文件 /etc/ssh/sshd_config。关键配置项允许 TCP 转发确保以下配置为 yes:AllowTcpForwarding yes启用网关端口使远程端口可以绑定到非本地地址:GatewayPorts yesGatewayPorts no:默认值,只允许绑定到 127.0.0.1(本地回环地址)。GatewayPorts yes:允许绑定到所有地址。GatewayPorts clientspecified:根据客户端的 -R 命令指定绑定地址。重启 SSH 服务修改配置后,重启 SSH 服务使其生效:sudo systemctl restart sshd常用组合参数1. 保持连接活跃 (-fN)-f:在连接建立后,SSH 会后台运行。-N:只建立端口转发,不执行远程命令。ssh -fN -L 8080:localhost:80 user@your-server2. 指定绑定地址-L 本地绑定地址:127.0.0.1 仅本地访问,0.0.0.0 外部可访问。-R 远程绑定地址:同样使用 127.0.0.1 或 0.0.0.0。ssh -R 0.0.0.0:8888:localhost:8080 user@your-server3. 动态端口转发 + 指定 SOCKS 代理使用 -D 开启动态端口转发,将本地端口作为 SOCKS 代理:ssh -D 127.0.0.1:1080 user@your-server4. 禁用伪终端-T:禁用伪终端分配,用于纯端口转发:ssh -T -R 8888:localhost:8080 user@your-server5. 指定配置文件-F:使用自定义 SSH 配置文件:ssh -F ~/.ssh/custom_config -L 8080:localhost:80 user@your-server远程端口转发的安全性考虑限制绑定地址如果不需要外网访问,建议远程端口绑定到 127.0.0.1,避免暴露服务:ssh -R 127.0.0.1:8888:localhost:8080 user@your-server强制使用 SSH 密钥认证配置服务器强制使用密钥认证,避免账户被暴力破解:PasswordAuthentication no监控转发端口的使用在远程服务器上监控端口转发的使用情况:netstat -tlnp完整案例1. 将本地服务暴露到远程服务器并开放外网访问ssh -R 0.0.0.0:8888:localhost:8080 user@your-server在远程服务器的 8888 端口监听,外部可通过 http://your-server:8888 访问。2. 映射远程服务到本地ssh -L 8080:localhost:80 user@your-server将远程服务器的 80 端口映射到本地 8080,本地访问 http://localhost:8080。3. 配置 SOCKS 代理ssh -D 127.0.0.1:1080 user@your-server本地 127.0.0.1:1080 作为 SOCKS 代理,可代理访问外网。
2025年01月08日
76 阅读
0 评论
2 点赞