>  기사  >  웹 프론트엔드  >  Node.js를 사용하여 SSH를 구현하는 방법에 대한 자세한 설명

Node.js를 사용하여 SSH를 구현하는 방법에 대한 자세한 설명

PHPz
PHPz원래의
2023-04-05 09:10:102997검색

SSH는 특히 원격 액세스 및 제어를 위해 컴퓨터 간의 보안 데이터 통신을 허용하는 암호화된 네트워크 프로토콜입니다.

Node.js는 효율적이고 확장 가능한 네트워크 애플리케이션을 구축하는 데 도움이 되는 Chrome V8 엔진을 기반으로 하는 JavaScript 런타임 환경입니다. 이번 글에서는 Node.js를 이용해 SSH를 구현하는 방법을 배워보겠습니다.

  1. Node.js 설치

Node.js를 사용하기 전에 먼저 Node.js를 설치해야 합니다. 공식 웹사이트에서 설치 패키지를 다운로드하고 지침에 따라 설치할 수 있습니다.

  1. SSH2 모듈 설치

Node.js에서는 SSH2 모듈을 사용하여 SSH를 구현할 수 있습니다. SSH2는 Node.js에서 실행되는 SSH2 클라이언트 및 서버측 라이브러리의 순수 JavaScript 구현입니다.

npm 패키지 관리자를 사용하여 SSH2 모듈을 설치할 수 있습니다.

npm install ssh2

설치가 완료되면 SSH2 모듈 사용을 시작할 수 있습니다.

  1. SSH 서버에 연결

SSH2 모듈을 사용하기 전에 먼저 SSH 연결을 설정해야 합니다.

const Client = require('ssh2').Client;

const conn = new Client();
conn.on('ready', () => {
  console.log('已连接');
  conn.end();
}).connect({
  host: 'x.x.x.x',
  port: 22,
  username: 'username',
  password: 'password',
});

이 예에서는 먼저 SSH2 모듈의 클라이언트 클래스를 가져온 다음 SSH 클라이언트 연결 개체 conn을 만듭니다.

연결 개체에서 연결이 성공적으로 설정된 후 트리거되고 "연결됨" 정보를 출력하는 준비 이벤트를 들을 수 있습니다. 마지막으로 conn.end() 메서드를 호출하여 연결을 닫습니다.

연결 옵션에서 대상 SSH 서버의 주소, 포트, 사용자 이름 및 비밀번호 정보를 제공해야 합니다.

  1. SSH 명령 실행

연결이 성공적으로 설정된 후 SSH2 모듈을 사용하여 원격 명령을 실행할 수 있습니다.

conn.on('ready', () => {
  console.log('已连接');
  conn.exec('ls', (err, stream) => {
    if (err) throw err;
    stream.on('close', (code, signal) => {
      console.log(`命令执行结束,退出码为:${code}`);
      conn.end();
    }).on('data', data => {
      console.log(`输出信息:${data}`);
    }).stderr.on('data', data => {
      console.log(`错误信息:${data}`);
    });
  });
}).connect({
  host: 'x.x.x.x',
  port: 22,
  username: 'username',
  password: 'password',
});

이 예에서는 conn.exec() 메서드를 호출하여 ls 명령을 실행하고 콜백 함수를 전달합니다.

명령을 실행하는 동안 오류가 발생하면 콜백 함수에서 예외가 발생합니다. 명령이 성공적으로 실행되면 읽을 수 있는 스트림 개체 스트림을 얻게 됩니다.

명령 실행이 끝날 때 트리거되어 종료 코드를 출력하는 스트림 개체의 닫기 이벤트를 들을 수 있습니다. 동시에 스트림 객체의 data 이벤트와 stderr 이벤트도 수신하고 각각 표준 출력과 오류 출력 정보를 출력합니다.

마지막으로 이벤트 핸들러 함수에서 conn.end() 메서드를 호출하여 연결을 닫습니다.

  1. 파일 전송

SSH2 모듈은 원격 명령 실행 외에도 파일 전송 기능도 지원합니다.

conn.sftp((err, sftp) => {
  if (err) throw err;
  const localFile = '/path/to/local/file.txt';
  const remoteFile = '/path/to/remote/file.txt';
  sftp.fastPut(localFile, remoteFile, err => {
    if (err) throw err;
    console.log('文件传输完成');
    conn.end();
  });
});

이 예에서는 conn.sftp() 메서드를 호출하여 파일 전송 기능을 제공하는 SFTP 객체를 얻습니다.

로컬 파일을 원격 서버로 빠르게 전송하기 위해 sftp.fastPut() 메소드를 사용합니다. 전송이 완료되면 "파일 전송 완료" 메시지를 출력하고 연결을 종료합니다.

  1. 요약

이 기사에서는 SSH2 모듈을 사용하여 프로그래밍 방식으로 SSH를 구현하는 방법을 배웠습니다. 먼저 SSH 서버에 연결한 다음 명령과 파일 전송을 수행합니다. Node.js와 SSH2 모듈을 사용하면 효율적이고 확장 가능한 네트워크 애플리케이션을 구축하기 위한 SSH 기능을 쉽게 구현할 수 있습니다.

위 내용은 Node.js를 사용하여 SSH를 구현하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.