场景描述
用户必须通过访问内网机A
,才能访问内网机B
。
一般把内网机A
称之为堡垒机,内网机B
称之为实际运转的服务器。
如果需要连接内网机B
,我需要ssh连接内网机A
,然后在内网机A
上通过ssh连接内网机B
,每次ssh需要输入密码,并且流程复杂。
那么有没有什么解决方法?我可以一键登录内网机B,并且在内网机B上远程开发调试呢?
答案是有的,为了达到目的,下面我们先介绍ssh免密登录。
一、ssh免密登录
一般在登录服务器的时候,会要求输入密码:
ssh -p 端口号 username@hostname
#例子如下:
ssh -p 10022 root@196.168.1.1
下面将演示如何从用户机器免密登录内网机A。
假定内网机A网络配置为:
宿主名称:ali
IP地址: 196.168.1.1
用户名:root
端口: 10022
1.用户机器生成公钥私钥(如果没有这个命令,需下载git)
ssh-keygen -t rsa
2.用户机器将用户机器的公钥添加到内网机A上。
ssh-copy-id -i C:/Users//用户名/.ssh/id_rsa.pub HOST_A
#例子如下:
ssh-copy-id -i C:/Users//用户名/.ssh/id_rsa.pub -p 10022 root@192.168.1.1
3.修改ssh配置
#打开C:/Users//用户名/.ssh/confg文件,添加如下配置
Host 宿主名称
HostName IP地址
User 用户名
Port 端口号
#例子如下:
Host ali
HostName 192.168.1.1
User root
Port 10022
4.登录内网机A
ssh 宿主名称
#例子如下:
ssh ali
5.免密登录成功!
二、ssh一键登录内网机B
通过ssh免密登录,我们已经打通用户机器->内网机A
需要按照上序步骤,同样打通打通内网机A->内网机B,在此不再赘述。
假定内网机A配置为:
IP地址:196.168.1.1
端口:10022
用户名:root
宿主名称:ali
假定内网机B配置为:
IP地址:36.8.122.122
端口:10022
用户名:test
宿主名称:capital
1.只需一步即可从用户机器->内网机B
#打开C:/Users//用户名/.ssh/confg文件,添加如下配置
#例子如下:
Host ali
HostName 192.168.1.1
User root
Port 10022
Host capital
HostName 36.8.122.122
User test
ForwardAgent yes
Port 10022
ProxyCommand ssh -W %h:%p ali
2.ssh一键登录内网机B
ssh 宿主名称
#例子如下:
ssh capital
3.登录成功!
三、vscode远程开发
通过二、ssh一键登录内网机B,实现了从用户机器一键登录内网机B。
那么能否在用户机器,远程开发内网机B呢?
答案是可以的,pycharm专业版和vscode均支持远程开发,下面我将介绍如何使用vscode远程开发。
1.打开vscode
-> ctrl+shift+X
打开插件市场->搜索remote ssh
->点击安装
2.配置.ssh config(参考二、ssh一键登录内网机B)
3.新增ssh 连接
4.登录成功!