好的,首先我对SSH的工作原理没有真正的了解......我正在使用https://github.com/mscdex/ssh2/尝试在SSH服务器上对ip进行“查找”。
在Putty中我只能通过接受服务器密钥(指纹)来连接到没有用户或密码的SSH服务器。
在ssh2中尝试相同时,我只得到“错误:等待握手时超时”。
任何人都可以帮助让我知道(并了解)我是否以及如何使其发挥作用?
谢谢!
答案 0 :(得分:0)
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: ''
});