SSH连接仅使用公钥完成。服务器然后要求输入用户名和密码。 连接后立即将用户名写入流中,然后输入“Enter”,然后输入密码。这让我可以访问服务器,并且可以在下面的情况下触发SSH命令(帮助)。
我希望这可以帮助别人挣扎,因为这是我的第一个Node.js项目,请随时发表评论,并帮助我更好的解决方案,如果你知道一个!
var Connection = require('ssh2');
var c = new Connection();
c.host = '<ip/host>';
c.port = 22;
c.username = 'user';
c.password = 'password';
c.on('ready', function() {
console.log('Connection :: ready');
// If we got here we have a connection
// Start by creating a shell
c.shell(onShell);
});
var onShell = function(err, stream) {
if (err != null) {
console.log('error: ' + err);
}
var cmdcnt = 0;
stream.on('data', function(data, extended) {
//console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ') + data);
console.log('[['+cmdcnt+'] '+data+']');
var str_data = String(data);
if (str_data.substr(data.length - 6) == 'xi52# ') {
//We are logged in, start sending commands...
if (cmdcnt == 2) stream.write('help\r');
}
// Set password after login, promtp #1
if (cmdcnt == 1) stream.write(c.password+'\r');
// command counter
cmdcnt++;
});
stream.on('end', function() {
console.log('Stream :: EOF');
});
stream.on('close', function() {
console.log('Stream :: close');
});
stream.on('exit', function(code, signal) {
console.log('Stream :: exit :: code: ' + code + ', signal: ' + signal);
c.end();
});
// Send username at connect
stream.write(c.username+'\r');
//console.log('Shell');
} // End onShell function
c.on('error', function(err) {
console.log('Connection :: error :: ' + err);
});
c.on('end', function() {
console.log('Connection :: end');
});
c.on('close', function(had_error) {
console.log('Connection :: close');
});
c.connect({
host: c.host,
port: c.port,
username: c.username,
password: ''
});
没有用户?您的PuTTY配置(Connection-> Data)中是否设置了默认用户?您是否使用ssh-agent或Pageant进行身份验证,或者您的PuTTY配置(Connection-> SSH-> Auth)中是否设置了私钥? – mscdex
我有相同的设置和相同的问题。没有用户名,也没有私钥需要登录到SSH服务器。 唯一的要求是接受Putty中的服务器指纹,然后获得连接。连接中的用户 - >数据为空,并且在Putty中没有设置私钥。 我在ssh2中得到与TS相同的错误。 – Anders
你必须使用telnet或其他的东西,因为ssh需要一个用户名(来自某处),如果它是一个真正的ssh服务器(除非连接速度非常慢),ssh2模块才会给你提供握手超时错误信息。 – mscdex