SSH(Secure Shell)에 대해서
- SSH(Secure Shell)는 컴퓨터 네트워크에서 암호화된 통신을 통해 원격으로 컴퓨터에 접속하고 명령을 실행할 수 있는 프로토콜이다.
- SSH는 보안 및 데이터 무결성을 제공하기 위해 설계되었으며, 일반적으로 원격 서버에 안전하게 접속하고 파일을 전송하거나 명령을 실행하는 데 사용된다.
- SSH는 클라이언트-서버 모델을 기반으로 작동한다.
- 일반적으로 SSH 클라이언트는 로컬 컴퓨터에서 실행되며, 원격 서버에 대한 인증 및 암호화된 통신을 처리한다.
- SSH 서버는 원격 컴퓨터에서 실행되며, 클라이언트의 연결 요청을 수락하고 인증을 검증한 후 암호화된 통신을 설정한다.
SSH의 기능과 특징
- 보안
SSH는 네트워크 통신을 암호화하여 데이터의 기밀성과 무결성을 보호한다. 암호화된 연결을 통해 비인가자가 데이터를 엿들을 수 없다. - 인증
SSH는 클라이언트와 서버 간의 안전한 인증을 제공한다. 대부분의 경우 사용자는 비밀번호 대신 SSH 키를 사용하여 서버에 로그인하게 된다. 이러한 키는 암호화되어 있으며, 개인 키는 클라이언트에 저장되고 공개 키는 서버에 저장된다. - 원격 제어
SSH를 사용하면 원격 서버에 대한 로그인 및 원격 명령 실행이 가능하다. 이를 통해 사용자는 로컬 컴퓨터에서 원격 서버를 제어하고, 파일 전송, 프로세스 관리, 설정 변경 등의 작업을 수행할 수 있다. - 포트 포워딩
SSH는 로컬 포트와 원격 포트 간의 연결을 안전하게 전달할 수 있는 포트 포워딩 기능을 제공한다. 이를 통해 로컬 시스템과 원격 서버 사이의 트래픽을 안전하게 전송하거나 원격 리소스에 접근할 수 있다.
⛈ SSH는 대부분의 운영 체제에서 사용할 수 있으며, 다양한 SSH 클라이언트 및 서버 소프트웨어가 제공된다. 일반적으로 OpenSSH는 많은 운영 체제에서 사용되는 가장 널리 알려진 SSH 구현체이다.
🐥 SSH를 사용하면 보안적으로 안전한 원격 접속 및 데이터 전송을 수행할 수 있으므로, 원격 서버 관리, 원격 작업 수행, 파일 전송 등에 유용하게 활용됩니다.
예제
ssh2모듈을 통해서 자바스크립트에서 원격 접속을 구현해보자.
npm install ssh2
이제 아래의 예제 코드를 사용하여 클라이언트 앱에서 SSH를 통해 원격 서버에 접속하고 명령을 실행할 수 있다.
const Client = require('ssh2').Client;
// SSH 연결 설정
const config = {
host: '<원격 서버 IP>',
port: 22,
username: '<사용자 이름>',
password: '<비밀번호>'
};
// SSH 클라이언트 생성
const conn = new Client();
conn.on('ready', () => {
console.log('SSH 연결 성공');
// 원격 서버에 명령 실행
conn.exec('ls', (err, stream) => {
if (err) throw err;
stream.on('close', (code, signal) => {
console.log('명령 실행 완료');
conn.end(); // SSH 연결 종료
}).on('data', (data) => {
console.log('결과:', data.toString());
}).stderr.on('data', (data) => {
console.log('에러:', data.toString());
});
});
});
conn.connect(config);
위의 코드에서 `<원격 서버 IP>`, `<사용자 이름>`, `<비밀번호>` 부분을 실제 원격 서버의 정보로 바꾼다.
이 예제에서는 `ls` 명령을 실행하여 원격 서버의 파일 목록을 출력하고 결과를 로그에 표시한다. 필요에 따라 원하는 명령으로 변경할 수 있다.
ssh2 라이브러리를 사용하여 SSH 연결을 설정하고 `exec` 메서드를 사용하여 원격 서버에 명령을 실행할 수 있다.
`stream` 객체는 명령 실행 결과를 읽고, `close` 이벤트에서 명령 실행이 완료되었음을 확인할 수 있다.
`data` 이벤트에서는 명령 실행 결과가 출력되고, `stderr` 객체를 통해 발생한 에러 메시지를 처리한다.
sshping은 SSH 연결 상태를 테스트하기 위해 개발된 도구로 sshping을 사용하면 명령행에서 원격 서버에 대한 SSH 연결을 테스트할 수 있다.
⚽️ 일반적으로는 PuTTY를 통한 SSH 원격 접속을 많이 하는 것 같다.
Download PuTTY - a free SSH and telnet client for Windows
Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W
www.putty.org