- 生成密钥
- 默认密钥
ssh-keygen -t rsa -C [email protected]
- 生成自定义文件名密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa_github -C [email protected]
- 多密钥配置
添加文件~/.ssh/config,内容如下
Host test-github #网站本地别称,建议设置成网站域名,该行不要直接复制,具体见下文 Hostname github.com #网站实际地址 IdentityFile ~/.ssh/test-github #密钥路径 User zcw
- 多密钥测试
ssh -v [email protected]
@符号后面的地址需要使用config文件中的 host 的值,而不是 hostname ,所以说建议设置成一样,测试连接 github.com 不行,这个大坑
- 默认密钥
- sshd安全
vi /etc/ssh/sshd_config
X11Forwarding no # PermitEmptyPasswords no # 禁止空密码 MaxStartups 10 # 最多保持多少个未认证的连接,防止SSH拒绝服务 PermitRootLogin no # 禁止root登录,否则很容易被用来暴力猜解
- ssh端口转发
场景举例
pc net ip lan ip service dev / 192.168.31.60 tomcat:8080 [email protected] 106.12.13.14 192.168.0.100 mongodb:27017 [email protected] / 192.168.0.101 mysql:3306 - dev为本地开发机器,家庭宽带,无固定公网ip,运行tomcat服务,端口是8080
- [email protected]为阿里云服务器,有固定公网ip,运行mongodb服务,端口是27017
- [email protected]为阿里云服务器,无外网,和[email protected]在同一局域网,运行mysql服务,端口是3306
- 代理服务器
TODO
- 访问本地特定端口,访问远程指定服务
- 需求示例1:从dev机器访问[email protected]上的mongodb服务
# 加上-f,在后台执行 ssh [email protected] -C -N -g -L 27018:localhost:27017
- 需求示例2:从dev机器访问[email protected]上的mysql服务,利用[email protected]作为跳板机
ssh [email protected] -C -N -g -L 13306:192.168.0.101:3306
- ssh远程端口转发,访问远程特定端口,访问本地指定服务
[email protected]上需编辑/etc/ssh/sshd_config,修改GatewayPorts为yes,更多请查看man sshd_config
- 需求示例:从[email protected]访问本地dev机器的tomcat服务
ssh [email protected] -C -N -g -R localhost:18080:localhost:8080 # 访问远程18080端口,即本地8080的服务 -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 # 客户端每60向服务器发送一次请求,服务器响应,从而保持连接
- 自动填入密码脚本
set password xxx spawn ssh [email protected] -C -N -g -R localhost:18080:localhost:8080 -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 expect "password" {send "$passwordr"} interact
- 补充(linux限制用户命令 2018/02/24)
执行以下命令
useradd ddns -s /home/ddns/bin/login.sh -m # 创建用户,指定shell passwd ddns # 修改密码 chown ddns:ddns -R /home/ddns # 修改文件夹权限 vi /home/ddns/bin/login.sh # 创建login.sh文件,内容见下文 chmod +x /home/ddns/bin/login.sh # 添加执行权限
login.sh文件内容,远程登录后只能用ssh命令
#!/bin/sh stty erase ^H stty kill ^U echo -en "SSH to Host :" read host echo -en "UserName: " read username /usr/bin/ssh $host -l $username
- 补充(远程端口转发,本地配置服务 2018/04/19)
- vi /usr/lib/systemd/system/ddns.service
[Unit] Description=ddns After=network.target [Service] Type=simple ExecStart=/usr/bin/ssh [email protected] -C -N -g -R *:20010:localhost:80 -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 [Install] WantedBy=multi-user.target
- 配置免密登录到服务器
略
- 服务开机自启
systemctl daemon-reload systemctl enable ddns # 上面的文件名 systemctl start ddns
原文:大专栏 ssh配置及端口转发
原文地址:https://www.cnblogs.com/wangziqiang123/p/11631487.html
时间: 2024-10-26 11:30:22