一、首先看看通过powershell远程连接linux
ssh user@ip -p 端口
user代表远程电脑的用户名
ip代表远程电脑的ip
-p指定端口(如更改了ssh的端口)
二、通过SSH做端口转发
ssh -R 0.0.0.0:8383:localhost:4321 root@公网ip -p 公网端口
ssh -R 0.0.0.0:8383:localhost:8080 root@... -p27701
localhost:4321 -----------本地的ip及需要访问的端口
0.0.0.0:8383 ---------远程的ip及地址
root@公网ip -p 公网端口 ----相当于正常登录ssh
参数具体含义如下:
-q: quiet模式,忽视大部分的警告和诊断信息(比如端口转发时的各种连接错误)
-T: 禁用tty分配(pseudo-terminal allocation)
-f: 登录成功后即转为后台任务执行
-N: 不执行远程命令(专门做端口转发)
-n: 重定向stdin为/dev/null,用于配合-f后台任务
-C: 开启压缩
常见问题
如果你遇到通过以上方法成功启动 SSH 隧道后,还是无法访问 12.34.56.78:8080,那么很有可能是外网服务器上的 SSH 没有配置对。为此你需要去外网服务器上修改 /etc/ssh/sshd_config 文件如下:
GatewayPorts yes //很重要
这个选项的意思是,SSH 隧道监听的服务的 IP 是对外开放的 0.0.0.0,而不是只对本机的 127.0.0.1。不开 GatewayPorts 的后果是不能通过 12.34.56.78:8080 访问,只能在外网服务器上通过 127.0.0.1:8080 服务到本地开发机的服务。
修改好配置文件后,你还需要重启 sshd 服务来加载新的配置,命令如下:
service sshd restart
如果使用以上方法还是无法访问 12.34.56.78:8080,请检查你外网服务器的防火墙配置,确保 8080 端口是对外开放的。
登录ssh出现 Permission denied, please try again 这是因为之前ssh登录保存了信息,服务器密码或者什么发生了变更。
解决办法:C:\Users\MSI-NB\.ssh\known_hosts 删除掉历史配置信息就好了