비기너 로드맵에 있는 '코딩' 강의에서는 ssh를 통해 vm의 리눅스와 호스트 머신의 vsc를 연결하는 부분이 나옵니다. 그러나 강의에서는 '현재 ~/.ssh 경로 아래 개인 키 파일이 존재한다고 가정하며, 키 파일 생성 과정은 자세히 다루지 않겠습니다.' 라며 ssh 키 설정에 관한 설명이 아예 없었고, 이에 따라 따로 알아보며 어찌저찌 리눅스와 윈도우에 ssh 키를 생성했습니다..만 제목 그대로 "프로세스에서 없는 파이프에 쓰려 했습니다.", "permission denied" 오류가 발생했습니다. 아래는 제가 해당 부분을 진행하면 생겼던 궁금증들입니다. 컴퓨터에 관한 지식이 거의 없는 컴린이 인 만큼 질문이 이상할 수도 있는 점 양해부탁드립니다. 꼭 전부가 아니라 아는 것에 관해서라도 알려주시면 매우 감사하겠습니다!
-
ubuntu 리눅스에서 생성한 개인 키와 윈도우에 있는 ssh 키가 일치해야 하나요? 만약 그래야 한다면, vm에서 생성한 ssh key를 어떻게 윈도우에 옮길수 있는지 궁금합니다.
-
강의 나온 대로 config 파일 내용을 수정하였습니다. user을 리눅스 이름으로 설정하였고, 키의 경로 설정도 하는 방법을 알게 되었습니다. 다만, vsc ssh를 통해 리눅스와 연결하려고 할 때, vsc에서
user@127.0.0.1에 대한 비밀번호를 입력하라고 하는데, ssh 개인, 공용 key와 리눅스 비밀번호를 입력해도 위와 같은 오류가 뜹니다.
솔직히 말씀드리면, 해당 강의에서 ssh에 대한 설명이 부재하여 따로 알아보며 했기에 어디에서 어떤 문제가 발생하여 연결이 안되는지 잘 모르겠습니다. 저와 같은 문제가 발생하신 분들이 더 있는것 같은데, 댓글의 내용을 이해 못하거나 따라하여도 똑같이 오류가 반복되기 일쑤였습니다. ssh를 통한 연결에 대한 팁들을 알려주시면 정말 감사하겠습니다!
vscode ssh "프로세스에서 없는 파이프에 쓰려 했습니다.", "permission denied" 오류발생
문제 개요
VSCode SSH를 통해 Ubuntu VM과 연결하려 할 때, 아래와 같은 오류가 발생함:
- "프로세스에서 없는 파이프에 쓰려 했습니다."
- "permission denied"
1. SSH 키 설정 관련
SSH 키가 일치해야 하나요?
네, SSH 키 쌍은 **서버(리눅스)**의 ~/.ssh/authorized_keys
파일에 등록된 공개 키와 **클라이언트(윈도우)**에서 사용하는 개인 키가 일치해야 합니다.
즉, Windows에서 사용할 **개인 키(Private Key)**는 Ubuntu에서 생성한 키의 Private Key와 동일해야 합니다.
SSH 키를 Windows로 옮기는 방법
만약 Ubuntu에서 SSH 키를 생성했다면, 아래 명령어를 사용해 Windows로 복사할 수 있습니다:
scp ~/.ssh/id_rsa user@windows-ip:C:\Users\your-username\.ssh\
또는 Windows PowerShell에서 실행:
scp user@ubuntu-ip:~/.ssh/id_rsa C:\Users\your-username\.ssh\
주의:
id_rsa
파일이 개인 키이므로 보안에 유의하세요.
2. VSCode SSH 연결 설정
SSH 설정 파일 (config
) 확인
Windows의 SSH 설정 파일 (C:\Users\your-username\.ssh\config
)에서 아래 내용을 확인하세요:
Host ubuntu-vm
HostName 127.0.0.1
User your-linux-username
IdentityFile C:\Users\your-username\.ssh\id_rsa
Port 22
IdentityFile
경로가 Windows에서 사용하는 개인 키 경로와 일치해야 합니다.
SSH 키의 권한 설정
리눅스에서 SSH 키의 권한이 올바르게 설정되지 않으면 인증 오류가 발생할 수 있습니다.
Ubuntu에서 다음 명령어를 실행하여 권한을 수정하세요:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 700 ~/.ssh
3. SSH 연결 시 비밀번호 요청 문제
VSCode에서 SSH 연결 시 user@127.0.0.1
에 대한 비밀번호를 요구하는 경우:
- SSH 키가 올바르게 설정되지 않았거나
- SSH 에이전트가 개인 키를 로드하지 않았을 가능성이 있습니다.
SSH 에이전트에 키 추가하기
Windows에서 Git Bash 또는 PowerShell을 열고 다음을 실행하세요:
ssh-agent bash
ssh-add C:\Users\your-username\.ssh\id_rsa
리눅스에서는 다음 명령어 실행:
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
이후 다시 VSCode에서 SSH 연결을 시도하세요.
4. SSH 서버 상태 확인
Ubuntu에서 SSH 서비스가 실행 중인지 확인하세요:
sudo systemctl status ssh
만약 SSH가 비활성화되어 있다면 다음 명령어로 활성화하세요:
sudo systemctl enable ssh
sudo systemctl start ssh
5. 추가 문제 해결
방화벽 및 포트 확인
SSH 연결이 안 될 경우, 방화벽이 포트 22를 차단하고 있는지 확인해야 합니다. Ubuntu에서 방화벽 상태 확인:
sudo ufw status
포트 22가 차단되어 있다면 허용 명령 실행:
sudo ufw allow 22/tcp
sudo ufw enable
로그 확인
만약 여전히 연결이 안 된다면 SSH 로그를 확인하세요:
tail -f /var/log/auth.log
이 로그를 통해 SSH 인증 실패 원인을 파악할 수 있습니다.
6. 결론
위 단계를 차례대로 따라가면서 SSH 연결 문제를 해결할 수 있습니다. 🚀