通过没有SMB协议的Java代码连接到Windows EC2实例

问题描述 投票:0回答:1

我正在尝试通过Java代码将AWS Windows实例与CIFS或WinRM连接,我不必使用SMB协议。我不确定是否可能。

在实例WinRM服务正在运行并且为了测试我已允许所有流量作为入站实例。

我想在这个实例上复制一些文件,以及我想使用这个java代码运行一些bash脚本。

我用CIFS试过 xebialabs/overthere

以下代码库我尝试实现但面临一些问题(所有主机属性都在那里)

    ConnectionOptions options = new ConnectionOptions();

    options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.WINDOWS);
    options.set(CifsConnectionBuilder.CONNECTION_TYPE, CifsConnectionType.WINRM_INTERNAL);
    options.set(CifsConnectionBuilder.WINRM_TIMEMOUT, "PT172800.000S");
    options.set(ConnectionOptions.CONNECTION_TIMEOUT_MILLIS, 900000);
    options.set(ConnectionOptions.SOCKET_TIMEOUT_MILLIS, 900000);
    options.set(CifsConnectionBuilder.WINRM_ENABLE_HTTPS, false);
    options.set(CIFS_PORT, CIFS_PORT_DEFAULT);
    options.set(ConnectionOptions.PROTOCOL, CIFS_PROTOCOL);

    // Host Properties
    options.set(ConnectionOptions.ADDRESS, host);
    options.set(ConnectionOptions.USERNAME, user);
    options.set(ConnectionOptions.PASSWORD, password);

    AddressPortMapper mapper = DefaultAddressPortMapper.INSTANCE;
    OverthereFile workingDirectory = null;
    WinrsConnection connection = new WinrsConnection(options, mapper, workingDirectory);

    connection.connect();

错误:

线程“main”中的异常java.lang.IllegalArgumentException:无法在ot上的com.xebialabs.overthere.winrs.WinrsConnection.connect(WinrsConnection.java:89)中创建与未运行Windows的winrs代理的smb:winrm_native连接。在ot.OtPOC.main(OtPOC.java:16)的ot.WinRmUtils.getNewWinRMConnection(WinRmUtils.java:89)的WinRmUtils.getWinRmConnection(WinRmUtils.java:76)

我也试过cloudsoft/winrm4j但这也行不通。

java windows smb winrm cifs
1个回答
0
投票

在配置中,您正在配置CifsConnectionType.WINRM_INTERNAL,而您正在实例化WinrsConnection。更喜欢使用工厂方法Overthere.getConnection(CifsConnectionBuilder.CIFS_PROTOCOL, config),或直接实例化WinrmConnection

WinrsConnection(或CifsConnectionType.WINRM_NATIVE)仅适用于Windows-2-Windows连接,因为它使用winrs.exe命令来执行WinRM命令。

WinrmConnection(或CifsConnectionType.WINRM_INTERNAL)适用于所有连接,因为它完全用Java实现。

© www.soinside.com 2019 - 2024. All rights reserved.