vscode无法连接到远程扩展主机服务器:VSCode使用远程SSH连接到远程服务器 无法连接到远程服务器
简介最近正在搭建一个VSCode的远程开发环境,主要解决C/C代码不能100%跳转的问题。话不多说,安装流程呈现。2步骤2.1安装SSH。因为我们使用SSH连接到远程服务器,所以Windows需要支
顺晟科技
2022-11-29 09:35:42
21
在此示例中,首先打开SSH连接,然后运行命令、读取输出并将其写入控制台,最后关闭SSH连接。我会让样本代码尽可能简单。
[] () 2.jsch
[JSch]()是SSH2的Java实现,允许连接到SSH服务器并使用端口转发、X11转发和文件传输。它还获得了BSD样式的许可,并提供了一种与Java建立SSH连接的简便方法。
首先,让我们向our _pom.xml_ file中添加[JSch Maven dependency]()条目。
Com.jcraft
Jsch
0.1.55
[]()使用2.1 JSch练习SSH连接。需要用户名、密码、主机URL和SSH端口。的默认SSH端口为22,但可能会出现这种情况。已将服务器配置为使用不同的端口进行SSH连接。
public static void list folders structure(字符串用户名、字符串密码、
字符串主机、int端口、字符串命令)出现异常{
Session session=空
ChannelExec channel=空
尝试{
会话=new jsch()。GetSession(用户名、主机、端口);
Session.setPassword(密码);
session . set config(' stricthostkeychecking ',' no ');
session . connect();
channel=(channel exec)session . openchannel(' exec ');
Channel.setCommand(命令);
Bytearray output stream响应流=new bytearray output stream();
channel . setoutputstream(response stream);
channel . connect();
While (channel.isConnected()) {
thread . sleep(100);
}
string responsestring=new string(response stream . to bytearray());
system . out . print ln(responsestring);
}最后一个{
在以下情况下(会话!=空){
session . disconnect();
}
如果(频道!=空){
channel . disconnect();
}
}
}
如代码所示,首先创建了客户端会话,并将其配置为连接到SSH服务器。然后,创建与SSH服务器通信的客户端通道,并提供通道类型——。在这种情况下为* exec *。也就是说,将shell命令传递给服务器。
此外,还必须为要记录服务器响应的通道设置输出流。使用*channel.connect()*方法建立连接时,将发送命令,并将收到的响应写入控制台。
让我们看一下如何使用JSch提供的各种配置参数。
StrihostKeyChecking指示应用程序确定是否可以在已知主机上找到主机公钥。此外,可用的参数值为_ask_、yes_和_no。其中_ask_为缺省值。如果将该属性设置为_yes_,则JSch不会自动将主机密钥添加到_known_hosts_ file,并拒绝连接到主机密钥已更改的主机。这将要求用户手动添加所有新主机。如果设置为No,JSch会自动将新主机密钥添加到已知主机列表中。
Compression。s2c指定从服务器到客户端应用程序的数据流是否使用压缩。可用值为_zlib_,_无_ value,第二个为默认值。
Compression。c2s客户端-指定是否对服务器方向的数据流使用压缩。可用值为_zlib_,_无_ value,第二个为默认值。
与服务器通信结束后,关闭会话和SFTP通道以防止内存泄漏至关重要。
[] () 3。Apachmina SSHD
[Apache MINA SSHD]()为基于Java的应用程序提供SSH支持。该库基于Apache MINA,这是一个可扩展的高性能异步I/o库。
再次[Apachmina SSHD Maven依赖关系]():
Org.apache.sshd
Sshd-核心
2.5.1
[] () 3.1练习我们来看一个使用Apache MINA SSHD连接到SSH服务器的代码示例。
public static void list folders structure(字符串用户名、字符串密码、
String host、int port、long defaultTimeoutSeconds、String command) IOException {
ssh client client=ssh client . setupdefaultclient();
client . start();
try(clientsessionsession=client . connect)(用户名、主机、端口)
.验证(defaultTimeoutSeconds、TimeUnit)。秒)。get session(){
Session.addPasswordIdentity(密码);
Session.auth()。验证(defaultTimeoutSeconds、TimeUnit)。秒);
try(bytearray output stream response stream=new bytearray output stream());
客户端通道通道=会话。创建通道(通道2.channel _ shell) {
频道。Setout(响应流);
尝试{
Channel.open()。验证(默认时间输出秒,时间单位。秒);
Try(管道输入输出流=通道。getinvertedin(){
管子进来了。写(命令。get bytes(););
管子进来了。flush();
}
频道。等待(枚举集。(客户端通道事件)。关掉,
时间单位10.25秒。tomillis(defaulttimeoutseconds);
字符串响应字符串=新字符串(响应流)。tobytearray(););
系统。出去。Println(响应字符串);
}最后一个{
频道。关(假);
}
}
}最后一个{
顾客。stop();
30
2022-11
30
2022-11
29
2022-11
29
2022-11
29
2022-11
29
2022-11