성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>로컬의 Visual Studio Code로 원격 리눅스 머신에 접속해 개발하는 방법</h1> <p> 얼마 전에 1.33.1 버전부터 지원된다는 소식을 들었었는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > VS Code Remote Development ; <a target='tab' href='https://code.visualstudio.com/docs/remote/remote-overview'>https://code.visualstudio.com/docs/remote/remote-overview</a> </pre> <br /> 이제서야 해보는군요. ^^ 방법은 크게 어렵지 않습니다. 일단 대상이 되는 리눅스 머신에 SSH 연결이 된 상황을 가정으로 설명해 보면, 우선 Visual Studio Code에 "Remote Development" 확장 팩을 설치하는 것으로 시작합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Remote Development ; <a target='tab' href='https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack'>https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack</a> </pre> <br /> 그다음 ssh key를 대상 리눅스 머신에 등록해야 하는데요, 따라서 현재 사용자의 ssh key가 있어야 합니다. 만약 이미 전에 생성한 적이 있다면 다음의 경로에,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > %USERPROFILE%\.ssh </pre> <br /> id_rsa, id_rsa.pub 파일이 있을 것입니다. 있다면 그걸 사용하시고 없다면 다음의 명령어로 만들어야 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>ssh-keygen -t rsa -b 4096</span> Generating public/private rsa key pair. Enter file in which to save the key (%USERPROFILE%/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in %USERPROFILE%/.ssh/id_rsa. Your public key has been saved in %USERPROFILE%/.ssh/id_rsa.pub. The key fingerprint is: SHA256:l5Tuxao...UYCFHtg testusr@TESTPC The key's randomart image is: +---[RSA 4096]----+ | o+ o +o.. | |oo.o E. . . | |ooo +..o o | |.. =..+ .o o | |. . o.oS = + | | + oo+o.+ = | | . .oo=. + | | +..oo . | | .oo. . | +----[SHA256]-----+ c:\temp> </pre> <br /> 이렇게 생성한 키에서 공개키 파일(id_rsa.pub)을 리눅스 머신 측에 등록하는데, 이를 위해 scp.exe로 리눅스 머신 측에 id_rsa.pub를 복사하고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> <span style='color: blue; font-weight: bold'>scp "%USERPROFILE%\.ssh\id_rsa.pub" tusr@192.168.100.50:~/tmp.pub</span> The authenticity of host '[192.168.100.50]:22 ([192.168.100.50]:22)' can't be established. ECDSA key fingerprint is SHA256:5HAse+...[생략]...mGk+iI. Are you sure you want to continue connecting (yes/no)? Warning: Permanently added '[192.168.100.50]:22' (ECDSA) to the list of known hosts. tusr@192.168.100.50's password: id_rsa.pub 100% 747 145.7KB/s 00:00 C:\temp> </pre> <br /> 리눅스 머신에 접속해 방금 전에 복사했던 tmp.pub의 내용을 사용자 프로파일 하위에 있는 ~/.ssh/authorized_keys 파일에 추가(없으면 새로 생성)해 줍니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > tusr@ubuntutest:~$ <span style='color: blue; font-weight: bold'>chmod 700 ~/.ssh</span> tusr@ubuntutest:~$ <span style='color: blue; font-weight: bold'>cat ~/tmp.pub >> ~/.ssh/authorized_keys</span> tusr@ubuntutest:~$ <span style='color: blue; font-weight: bold'>chmod 600 ~/.ssh/authorized_keys</span> </pre> <br /> 끝입니다. 임시 파일은 삭제해 주고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > tusr@ubuntutest:~$ rm -f ~/tmp.pub </pre> <br /> 비주얼 스튜디오 코드를 실행해 "Ctrl + Shift + P"를 눌러 "Command Palette"에서 다음의 명령어를 선택한 다음,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Remote-SSH: Connect to Host... </pre> <br /> 여느 SSH 연결과 동일하게 사용자@서버 주소를 입력해 연결하면 됩니다. 그럼 새롭게 Visual Studio Code가 실행되고 그 프로세스 내에서의 모든 활동은 대상 리눅스 머신을 바탕으로 합니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 참고로 SSH tunnel 설정 등의 이유로 포트를 명시하고 싶을 수 있는데 다음과 같은 식으로 입력하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > tusr@127.0.0.1:15000 </pre> <br /> 접속할 수 없다고 나옵니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Can't connect to tusr@127.0.0.1:15000: unreachable or not Linux x86_64 (ssh: Could not resolve hostname 127.0.0.1:15000: No such host is known.) </pre> <br /> 이런 경우, "Remote-SSH: Forward Port from Active Host..." 명령을 이용해 포트 매핑을 설정한 파일을 생성하는 것으로 해결할 수 있는데 이는 다음의 글을 참고하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Forwarding a port / creating SSH tunnel ; <a target='tab' href='https://code.visualstudio.com/docs/remote/ssh#_forwarding-a-port-creating-ssh-tunnel'>https://code.visualstudio.com/docs/remote/ssh#_forwarding-a-port-creating-ssh-tunnel</a> </pre> <br /> 개인적으로 저 방법보다는 "연결 파일"을 만들어 두는 것을 더 선호합니다. 왜냐하면 연결 파일을 만들어 두면 "Remote-SSH: Connect to Host..." 명령 후에 해당 파일이 목록에 나타나 바로 선택해 접속하는 것이 가능하므로 더 편리하기 때문입니다. 방법은 다음의 파일을 만들고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > %USERPROFILE%\.ssh\config (확장자 없이 파일명 자체가 config) </pre> <br /> 내용을 이렇게 채워주면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > # Read more about SSH config files: <a target='tab' href='https://linux.die.net/man/5/ssh_config'>https://linux.die.net/man/5/ssh_config</a> Host testlinux HostName 127.0.0.1 User tusr Port 15000 # 만약 기본 id_rsa 파일이 아닌 경우 별도로 IdentityFile을 이용해 경로를 지정하는 것도 가능 Host node-vm HostName 127.0.0.1 User tusr Port 16000 IdentityFile ~/.ssh/id_home </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2005
(왼쪽의 숫자를 입력해야 합니다.)