首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对带保护功能的HP Nonstop Guardian的SSH脚本

针对带保护功能的HP Nonstop Guardian的SSH脚本
EN

Stack Overflow用户
提问于 2018-12-01 00:06:26
回答 4查看 840关注 0票数 1

我们有一些perl脚本可以在带telnet的hp nonstop机器上的guardian os上做一些事情。现在,我们必须关闭telnet,并且必须使用ssh (comforte)与安全用户的连接。

我们尝试使用下面的perl代码进行连接,一切似乎都正常,但是shell没有保持打开状态。

代码语言:javascript
复制
use Net::SSH::Perl;
use Term::ReadKey;
my $host = "XX.XXX.XXX.XXX";
my $user = "safeguarduser";
my $pass = "";
my $ssh = Net::SSH::Perl->new($host, options => [
"Cipher +aes256-ctr", "MACs +hmac-sha2-256", "HostKeyAlgorithms +ssh-dss"], debug => 1);
$ssh->login($user, $pass);

调试日志显示:

代码语言:javascript
复制
p-066280682253: Reading configuration data C:\Users\User\.ssh\config
p-066280682253: Reading configuration data C:\WINDOWS\ssh_config
p-066280682253: Connecting to XX.XXX.XXX.XXX, port 22.
p-066280682253: Remote version string: SSH-2.0-1.37g sshlib: TXXXXH0X_14MAY2018_comForte_SSH2_0105a:\TXXXX.$SSH01
p-066280682253: Remote protocol version 2.0, remote software version 1.37g sshlib: TXXXXH0X_14MAY2018_comForte_SSH2_0105a:\TXXXX.$SSH01
p-066280682253: Net::SSH::Perl Version 2.14, protocol version 2.0.
p-066280682253: No compat match: 1.37g sshlib: TXXXXH0X_14MAY2018_comForte_SSH2_0105a:\TXXXX.$SSH01.
p-066280682253: Connection established.
p-066280682253: Sent key-exchange init (KEXINIT), waiting for response.
p-066280682253: Using diffie-hellman-group-exchange-sha256 for key exchange
p-066280682253: Host key algorithm: ssh-dss
p-066280682253: Algorithms, c->s: aes256-ctr hmac-sha2-512 none
p-066280682253: Algorithms, s->c: aes256-ctr hmac-sha2-512 none
p-066280682253: Entering Diffie-Hellman Group Exchange.
p-066280682253: SSH2_MSG_KEX_DH_GEX_REQUEST(2048<4096<8192) sent
p-066280682253: Sent DH Group Exchange request, waiting for reply.
p-066280682253: Received 2048 bit DH Group Exchange reply.
p-066280682253: Generating new Diffie-Hellman keys.
p-066280682253: Entering Diffie-Hellman key exchange.
p-066280682253: Sent DH public key, waiting for reply.
p-066280682253: Received host key, type 'ssh-dss'.
p-066280682253: Host 'XX.XXX.XXX.XXX' is known and matches the host key.
p-066280682253: Verifying server signature.
p-066280682253: Send NEWKEYS.
p-066280682253: Waiting for NEWKEYS message.
p-066280682253: Enabling encryption/MAC/compression.
p-066280682253: Sending request for user-authentication service.
p-066280682253: Service accepted: ssh-userauth.
p-066280682253: Trying empty user-authentication request.
p-066280682253: Login completed, opening dummy shell channel.
p-066280682253: channel 0: new [client-session]
p-066280682253: Requesting channel_open for channel 0.
p-066280682253: channel 0: open confirm rwindow 1048576 rmax 57344
p-066280682253: Got channel open confirmation, requesting shell.
p-066280682253: Requesting service shell on channel 0.

我们可以与Putty连接并工作。putty设置中的exec命令是"tacl“。使用plink时,它只在使用putty会话名称时有效。使用param和perl tacl时,我们会得到与-c脚本相同的错误,因为没有外壳。

(信息:客户端为Windows PC)

希望有人能帮助我们,我们已经尝试了很多。

谢谢你,致以最良好的问候

EN

回答 4

Stack Overflow用户

发布于 2018-12-03 21:02:02

您能确切地解释一下在切换到SSH之前您是如何处理telnet会话的吗?我不假思索地认为,您可能最终选择了操作系统(NonStop的UNIX个性),因为puTTY (可能还有plink)模拟了XTerm。如果在SSH协商期间指定的终端类型不是"TN6530-8“( NonStop守护终端仿真器),NonStop SSH会自动将您放入OSS。

我刚刚尝试了plink (Windows10CMD提示符),得到了这个,这是意料之中的:

C:\Users\andy\Downloads>plink -ssh -pw xxxxxxx andyw@nnn.nn.nnn.nn gtacl -c 'status *,user‘

使用键盘交互式身份验证。

上次登录时间:2018年12月3日05:37

最后一次失败尝试: 03 DEC 2018,05:31失败总数: 20

处理Pri PFR %WT用户WT程序文件Hometerm

$Z4YN B 0,119 146 001 8,1 $SYSTEM.SYS07.TACL $ZTN0.#PTB2NV5

$SSLS 0,504 148 001 8,1 $SYSTEM.SSLPRXY.SSLPRXY $ZPTY.#ZWN0517

$SSFS 0,749 148 001 8,1 $SYSTEM.SSLPRXY.SSLFTPS $ZPTY.#ZWN0517

$Z2TJ 2,74 149 005 8,1 $SYSTEM.SYS07.TACL $ZPTY.#ZWN0882

$Z5MZ 2,75 149 001 8,1 $SYSTEM.SYS07.TACL $ZPTY.#ZWN0886

$Z5NR 2,254 149 004 8,1 $SYSTEM.SYS07.TACL $ZHOME

代码语言:javascript
复制
        2,1019  148     001   8,1   $SYSTEM.SYS07.OSH          $ZPTY.#ZWN0886

     X  2,1098  148     004   8,1   /bin/ksh                   $ZPTY.#ZWN0886

$Z5NQ X 2,1139 149 001 8,1 /bin/gtacl $ZHOME

$Z4YN 3,9 146 001 8,1 $SYSTEM.SYS07.TACL $ZTN0.#PTB2NV5

$Z5MZ B 3,42 149 001 8,1 $SYSTEM.SYS07.TACL $ZPTY.#ZWN0886

$Z2TJ B 3,201 149 001 8,1 $SYSTEM.SYS07.TACL $ZPTY.#ZWN0882

$SSLS B 3,1014 148 001 8,1 $SYSTEM.SSLPRXY.SSLPRXY $ZPTY.#ZWN0517

$SSFS B 3,1018 148 001 8,1 $SYSTEM.SSLPRXY.SSLFTPS $ZPTY.#ZWN0517

$CAIL 3,1045 145 011 8,1 $SYSTEM.SYS07.TELSERV $ZTN0.#PTB2P0J

C:\Users\andy\Downloads>

票数 1
EN

Stack Overflow用户

发布于 2018-12-20 08:24:52

我没有看到Perl代码要求使用TACL。

使用全新安装的Putty并且没有对其进行配置,我可以使用plink连接:

代码语言:javascript
复制
PS C:\Program Files\PuTTY> plink d.trump@10.0.0.173 tacl
Using keyboard-interactive authentication.
Password:
Using keyboard-interactive authentication.
Last Logon:  20 DEC 2018, 01:05
Last Unsuccessful Attempt: 06 DEC 2018, 03:40  Total Failures: 33
Last Logon Failures: 0
TACL (T9205H01 - 24AUG2018), Operating System L06, Release L18.08.01

<usual TACL startup output omitted>

(Invoking $DT.WHOUSE.TACLCSTM)
Current volume is $DT.WHOUSE
$DT WHOUSE 1>

在NonStop上的SSH审计文件中,我看到:

代码语言:javascript
复制
$SSH00|20Dec18 01:05:29.67|50|10.0.3.40:56431:10.0.0.173: accepted connection from client
$SSH00|20Dec18 01:05:29.68|50|10.0.3.40:56431:10.0.0.173: client version string: SSH-2.0-PuTTY_Release_0.70
$SSH00|20Dec18 01:05:30.75|50|10.0.3.40:56431:10.0.0.173: key-exchange done and server authentication by client successful.
$SSH00|20Dec18 01:05:30.75|40|10.0.3.40:56431:10.0.0.173: SSH session established. 
$SSH00|20Dec18 01:05:31.44|20|10.0.3.40:56431:10.0.0.173: gssapi-with-mic authentication failed: GSSAPI not available
$SSH00|20Dec18 01:05:36.81|40|10.0.3.40:56431:10.0.0.173: keyboard-interactive dialog successful for user 'd.trump', keyboard-interactive authentication successful
$SSH00|20Dec18 01:05:37.50|50|10.0.3.40:56431:10.0.0.173: channel exec request, launching /bin/sh -c param -c tacl 
$SSH00|20Dec18 01:05:37.63|50|10.0.3.40:56431:10.0.0.173: spawned program /bin/sh successfully (pid 520093761) 
$SSH00|20Dec18 01:05:37.67|50|10.0.3.40:56431:10.0.0.173: spawned program /bin/sh terminated with exit code 127
$SSH00|20Dec18 01:05:38.02|40|10.0.3.40:56431:10.0.0.173: SSH session terminated 
$SSH00|20Dec18 01:06:04.79|50|10.0.3.40:56440:10.0.0.173: accepted connection from client
$SSH00|20Dec18 01:06:04.80|50|10.0.3.40:56440:10.0.0.173: client version string: SSH-2.0-PuTTY_Release_0.70
$SSH00|20Dec18 01:06:05.87|50|10.0.3.40:56440:10.0.0.173: key-exchange done and server authentication by client successful.
$SSH00|20Dec18 01:06:05.87|40|10.0.3.40:56440:10.0.0.173: SSH session established. 
$SSH00|20Dec18 01:06:06.55|20|10.0.3.40:56440:10.0.0.173: gssapi-with-mic authentication failed: GSSAPI not available
$SSH00|20Dec18 01:06:10.92|40|10.0.3.40:56440:10.0.0.173: keyboard-interactive dialog successful for user 'd.trump', keyboard-interactive authentication successful
$SSH00|20Dec18 01:06:11.61|50|10.0.3.40:56440:10.0.0.173: channel request for subsystem tacl, launching \XXX.$SYSTEM.SYS03.TACL with process name '\XXX.$Z4ML' 
$SSH00|20Dec18 01:06:11.67|50|10.0.3.40:56440:10.0.0.173: launched program \XXX.$SYSTEM.SYS03.TACL successfully (\XXX.$Z4ML:3750193)

在SSH日志文件中,我看到:

代码语言:javascript
复制
$SSH00|20Dec18 01:06:06|10.0.3.40:56440:10.0.0.173: d.trump@10.0.3.40 authentication failed (method gssapi-with-mic): GSSAPI not available.
$SSH00|20Dec18 01:06:10|10.0.3.40:56440:10.0.0.173: d.trump@10.0.3.40 authentication granted (method keyboard-interactive): keyboard-interactive dialog successful. System user: d.trump 
$SSH00|20Dec18 01:06:11|10.0.3.40:56440:10.0.0.173: d.trump@10.0.3.40 subsystem tacl granted (process: \XXX.$Z4ML) 

尝试查看SSH日志文件,并将工作正常时发生的情况与不工作时发生的情况进行比较。记住,如果你真的被卡住了,你可以把这个传给TNSC。

票数 0
EN

Stack Overflow用户

发布于 2018-12-26 15:29:14

在最终完成Perl安装来完成我想要做的事情之后,我想我理解了您所说的(我在输出方面也看到了同样的结果),但是看起来好像没有什么问题。如果我在登录后添加一个命令,它可以工作。

代码语言:javascript
复制
use Net::SSH::Perl;
use Term::ReadKey;
my $host = "x.x.x.x";
my $user = "group.user";
my $pass = "secretsanta";
my $ssh = Net::SSH::Perl->new($host, options => [
"Cipher +aes256-ctr", "MACs +hmac-sha2-256", "HostKeyAlgorithms +ssh-dss"], debug => 1);
$ssh->login($user, $pass);

print "Enter a command to execute: [ls -l] ";
chomp(my $cmd = <STDIN>);

my($out, $err) = $ssh->cmd($cmd || "ls -l");
print $out;

日志:

代码语言:javascript
复制
dev-as: Requesting service shell on channel 0.
Enter a command to execute: [ls -l] ls -la
dev-as: channel 1: new [client-session]
dev-as: Requesting channel_open for channel 1.
dev-as: Entering interactive session.
dev-as: Requesting service exec on channel 1.
dev-as: channel 1: open confirm rwindow 1048576 rmax 57344
dev-as: input_channel_request: rtype exit-status reply 0
dev-as: channel 1: rcvd eof
dev-as: channel 1: output open -> drain
dev-as: channel 1: obuf empty
dev-as: channel 1: output drain -> closed
dev-as: channel 1: close_write
dev-as: channel 1: rcvd close
dev-as: channel 1: input open -> closed
dev-as: channel 1: close_read
dev-as: channel 1: send close
dev-as: channel 1: full closed
total 388615
-rw-rw-rw-    1 GROUP.USER            COMF      810000 Nov 21 23:07 test1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53561031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档