SSH ν€ νμ΄ λ°κΈ λ° μ격 νΈμ€νΈ μ°κ²°νκΈ°
κ°λ°μ λλ μμ€ν μ μ΄μ©νλ μ¬λλ€μ΄ μλ² μμ§λμ΄κ° ꡬμΆν μ격 νΈμ€νΈμ μ μνκΈ° μν΄μ SSH νλ‘ν μ½μ μ¬μ©νλ€. μ°λ¦¬κ° μ»΄ν¨ν°μ λ‘κ·ΈμΈνλ κ²μ²λΌ κ°λ¨νκ² μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νκΈ°λ νλ©° 곡κ°ν€ κΈ°λ° μΈμ¦μΌλ‘ λΉλ°λ²νΈλ₯Ό λ체νκ±°λ 2FA(OTP)λ₯Ό μΆκ°μ μΌλ‘ μΈμ¦νμ¬ λ³΄μμ μ μ©νκΈ°λ νλ€. SSH νλ‘ν μ½μ μ¬μ©νλ μ΄μ μλ TCP 보μ μ±λμ μ°κ²°νκ³ ν΅μ λ΄μ©μ λν΄ μνΈννμ¬ ν¨ν·μ 보νΈνκ³ μμ νκ² μλ²μ μ μνμ¬ ν΅μ ν μ μλλ‘ κ΅¬μ±νκΈ° μν¨μ μλ€. μ΄λ³΄ κ°λ°μλΌλ©΄ μ΄ κΈμ ν΅ν΄μ SSH ν€νμ΄λ₯Ό λ°κΈν΄λ³΄κ³ μλ§μ‘΄ μΉ μλΉμ€μ EC2 μΈμ€ν΄μ€ λλ κΉνλΈ μ μ₯μμ λ±λ‘νμ¬ μ격 νΈμ€νΈμ μ°κ²°νλ λ°©λ²μ ν΅ν΄μ SSHμ λν΄ μ΄ν΄ν΄λ³΄κΈ°λ₯Ό λ°λλ€.
λ¨Όμ , μλ² μμ§λμ΄κ° 리λ μ€ μλ² νκ²½μ μ€λΉνκ³ μ 곡ν΄μ£Όλ κ²μ²λΌ λ΄ μ»΄ν¨ν°μ κ°μμ 리λ μ€ νκ²½μ λ§λ€μ΄λ³Ό μ μλλ° μλμ λκ°μ§ λ°©λ² μ€μμ OracleVM VirtualBoxμ μ¬μ©ν΄μ 리λ μ€ μλ²λ₯Ό μ€λΉνμλ€.
sudo apt-get update
sudo apt-get install openssh-server
ssh -V
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
VirtualBoxλ‘ μ€λΉλ μ°λΆν¬ 리λ μ€μ μ£Όμλ 192.168.0.28 μ΄λ€.
λ΄ μ»΄ν¨ν°μ μ€μΉλ OpenSSH ν΄λΌμ΄μΈνΈλ₯Ό μ¬μ©ν΄μ μ μ°λΆν¬ 리λ μ€μ μ μν΄λ³΄λλ‘ νμ.
PS C:\Users\Mambo> ssh ubuntu@192.168.0.28
ubuntu@192.168.0.28's password:
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-47-generic x86_64)
μ€μ 리λ μ€ μλ² κ·Έλ¦¬κ³ μΈνλΌμ λ°λΌμ μ¬λ¬κ°μ§ λ€νΈμν¬ λ°©νλ²½ μ μ± μ΄ μμ μ μμ§λ§ μ§κΈμ λ΄ μ»΄ν¨ν°μ κ°μ νκ²½μΌλ‘ μ°λΆν¬ 리λ μ€λ₯Ό μ€λΉνκ³ μ΄λ€ λ°©νλ²½λ μ‘΄μ¬νμ§ μμΌλ―λ‘ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ§μΌλ‘ SSH νλ‘ν μ½μ μ¬μ©νμ¬ λ¦¬λ μ€ μλ²μ μ°κ²°ν μ μμλ€.
SSH ν€ νμ΄
μλ§μ‘΄ μΉ μλΉμ€μ EC2 μΈμ€ν΄μ€ λλ κΉνλΈ μ μ₯μμ κ°μ μλΉμ€μμλ SSH νλ‘ν μ½μ μ¬μ©ν΄μ μλ²μ μ°κ²°ν λμ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νμ§ μκ³ κ³΅κ°ν€ κΈ°λ°μ ν€ νμ΄λΌλ κ²μ μ¬μ©νλ€. λΉλ°λ²νΈ μΈμ¦λ³΄λ€ 곡κ°ν€ κΈ°λ° μΈμ¦μ ꡬμ±νλ μ΄μ λ λΉλ°λ²νΈ μΈμ¦ λ°©μμ κ²½μ°μλ μλ²μμ μ¬μ©λλ λΉλ°λ²νΈλ₯Ό μΈλΆλ‘ κ·Έλλ‘ λμΉν€λ‘μ¨ λ ΈμΆνλ κ²μ΄λ©° 곡κ°ν€ κΈ°λ° μΈμ¦μ μλ²μμ μ λ’°ν μ μλ ν€λ₯Ό 보μ ν ν΄λΌμ΄μΈνΈκ° μλ‘ λ€λ₯Έ ν€λ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ΄λ€.
SSH ν€νμ΄κ° 보μμ μΌλ‘ μλ²½ν κ²μ μλλ―λ‘ SSH ν΄λΌμ΄μΈνΈκ° 보μ νλ λΉλ°ν€κ° μ 3μμκ² νμ·¨λμ§ μλλ‘ μ κ΄λ¦¬ν΄μΌνλ κ²μ νμνλ€.
SSH ν€ νμ΄ μμ±νκΈ°
μλ§μ‘΄ μΉ μλΉμ€λ₯Ό μ΄μ©νλ κ°λ°μλΌλ©΄ μΉ μ½μμ΄λ AWS CLIμ create-key-pair λͺ λ Ήμ μ¬μ©ν΄μ RSA λλ ED25519 κΈ°λ°μ ν€ νμ΄λ₯Ό κ°λ¨νκ² μμ±ν μ μλ€. κ·Έλ¬λ, μΌλ°μ μΈ κ²½μ°λΌλ©΄ μ΄λ ν νκ²½μ μμ‘΄νμ§ μκ³ OpenSSHμ ν¬ν¨λ ssh-keygen λꡬλ₯Ό μ¬μ©νλ λ°©λ²μ λν΄μ μμμΌνλ€. μμ, μ€λΉλ μ°λΆν¬ 리λ μ€μ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©ν΄μ μ μνμμλ μλμ°μ OpenSSH ν΄λΌμ΄μΈνΈλ₯Ό μ΄μ©νμλλ° μλμ° 10μ μ νμ κΈ°λ₯μ ν΅ν΄μ κ°λ¨νκ² OpenSSH ν΄λΌμ΄μΈνΈλ₯Ό μ€μΉν μ μκ³ Git Bashλ₯Ό μ€μΉν΄λ ssh-keygenμ΄ ν¬ν¨λμ΄μμΌλ―λ‘ μμ μ΄ μνλ λ°©μμ μ νν΄λ³΄λ©΄ μ’μ κ² κ°λ€.
# in Windows Terminal
PS C:\Users\Mambo\keypair> ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
# in Git Bash
$ ssh -V
OpenSSH_9.0p1, OpenSSL 1.1.1p 21 Jun 2022
OpenSSHλ₯Ό νμΈνλ€λ©΄ Generating a new SSH key and adding it to the ssh-agentλ₯Ό μ°Έκ³ ν΄μ ssh-keygenμΌλ‘ SSH ν€νμ΄λ₯Ό μμ±νλ λ°©λ²μ λν΄μ μμ보μ.
RSA ν€ νμ΄
PS C:\Users\Mambo\keypair> ssh-keygen -t rsa -b 4096 -m PEM -f win-mambo-rsa-4096.pem
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in win-mambo-rsa-4096.pem.
Your public key has been saved in win-mambo-rsa-4096.pem.pub.
The key fingerprint is:
SHA256:F3ECBEjeXszb6ccTJ2EWz9eaxvZoAg4f6F4rU0aDYJY mambo@DESKTOP-OJJ4TB3
The key's randomart image is:
+---[RSA 4096]----+
| ....+o.o o |
| ...Eo + + .|
| .o..+.. + o o|
| . ..+o= o + |
| . S.*.o B |
| . *o+ * o |
| .o= = o .|
| .o. o + |
| .o. |
+----[SHA256]-----+
ED25519 ν€ νμ΄
PS C:\Users\Mambo\keypair> ssh-keygen -t ed25519 -m PEM -f win-mambo-ed25519.pem
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in win-mambo-ed25519.pem.
Your public key has been saved in win-mambo-ed25519.pem.pub.
The key fingerprint is:
SHA256:oad/A11tVJQFxRIDA63pozCFj/FsTCDh51hALNdFBVU mambo@DESKTOP-OJJ4TB3
The key's randomart image is:
+--[ED25519 256]--+
| o+o o++++E.+BB|
| ..+.o ..oo.|
| o..oo. o o . |
| =o.o.o . o |
| . oXSo . . |
| +oB + |
| .+ o . |
| .. o |
| .. . |
+----[SHA256]-----+
λ¨Όμ , RSA κΈ°λ°μ ν€ νμ΄λ₯Ό λ§λ€λλ κΈ°λ³Έμ μΌλ‘ 2048 λΉνΈ μ΄μμΌλ‘ λ§λ€μ΄μ§κ² λλλ° μλ§μ‘΄ μΉ μλΉμ€λ κΉνλΈ μ μ₯μμμλ λͺ¨λ 4096 λΉνΈλ₯Ό μ§μνκ³ μμΌλ©° μ΄λ₯Ό κΆμ₯νλ νΈμ΄λ€. κ·Έλ°λ°, μμ€ν μμ ED25519 λ°©μμ μ§μνλ€λ©΄ ν€ κΈΈμ΄μ λ°λ₯Έ 보μ ν¨μ¨ μ ED25519λ₯Ό μ¬μ©νλκ² λ λμ μ νμ΄ λ μ μλ€.
SSH 곡κ°ν€ λ±λ‘νκΈ°
PS C:\Users\Mambo\keypair> scp .\window-mambo.pub ubuntu@192.168.0.28:/home/ubuntu/.ssh/
ubuntu@192.168.0.28's password:
window-mambo.pub 100% 104 51.6KB/s 00:00
# in ubuntu
ubuntu@ubuntu:~/.ssh$ cat window-mambo.pub >> authorized_keys
PS C:\Users\Mambo\keypair> ssh -i .\window-mambo.pem ubuntu@192.168.0.28
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-47-generic x86_64
μ΄λ κ² ν΄μ SSH ν€ νμ΄λ₯Ό λ°κΈνκ³ κ°μ νκ²½μΈ μ°λΆν¬ 리λ μ€μ ν€ νμ΄λ₯Ό λ±λ‘νκ³ SSHλ‘ μ μν΄λ³΄μλ€. μλ² μμ§λμ΄λ μ΄λ¬ν κ³Όμ μ κ±°μΉκ² λλ©΄μ μ΅μ’ μ μΌλ‘ κ°λ°μμΈ μ°λ¦¬μκ² μλ²μ μ μν μ¬μ©μ μ΄λ¦κ³Ό ν¨κ» λΉλ°ν€λ₯Ό μ λ¬ν κ²μμ μ μ μλ€.
SSH ν€ νμ΄ μ€μ΅
μ΄μ μλ§μ‘΄ μΉ μλΉμ€μ κΉνλΈ μ μ₯μ μλΉμ€μ SSH ν€νμ΄λ₯Ό λ±λ‘νκ³ μ°κ²°νλ κ²μ μ€μ΅ν΄λ³΄λ©΄μ λ€μ νλ² λ¨Έλ¦¬μ μμ§νλλ‘ ν΄λ³΄μ.
κΉνλΈ κ³΅κ°ν€ λ±λ‘νκΈ°
λ¨Όμ , μ¬λ΄μμ μ¬μ©μ€μΈ μ‘°μ§ κ³μ μΌλ‘ λ±λ‘λμ΄μλ νλΌμ΄λΉ κΉνλΈ λ¦¬νμ§ν 리λ₯Ό 볡μ¬ν΄μ€κ±°λ νΈμν΄μΌνλ€λ©΄ μ‘°μ§μ μν λ΄ μ¬μ©μ κ³μ μ SSH ν€ νμ΄λ₯Ό λ±λ‘νκ³ κΉνλΈ μλ²μ μΈμ¦ν μ μμ΄μΌ νλ€. μ¬μ©μ κ³μ μ€μ > μ‘μΈμ€ > SSH and GPG Keys λ©λ΄λ‘ μ§μ νλ©΄ SSH ν€ νμ΄λ₯Ό λ±λ‘ν μ μλλ‘ μ 곡νκ³ μμΌλ―λ‘ μμ λ§λ€μλ ED25519 ν€ νμ΄λ₯Ό λ±λ‘νκ³ κΉνλΈμ μ μν μ μλμ§ ν μ€νΈ ν΄λ³΄μ.
κΉνλΈ μλ²μ μ°λ¦¬κ° λ§λ ν€ νμ΄λ₯Ό λ±λ‘νμμΌλ―λ‘ λ΄ μ»΄ν¨ν°μ OpenSSH ν΄λΌμ΄μΈνΈλ‘ κΉνλΈμ μ°κ²°ν μ μλμ§ νμΈν΄λ³΄μ. κΉνλΈμμλ μμ 리λ μ€ μλ²μ μ°κ²°νλ κ² μ²λΌ μμ μ 곡νμ§λ μμ§λ§ μΈμ¦μ μ±κ³΅ν μ μλμ§ κ²μ¦ν΄λ³Ό μ μλ€.
PS C:\Users\Mambo\keypair> ssh -i win-mambo-ed25519.pem -T git@github.com
The authenticity of host 'github.com (15.164.81.167)' cannot be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,15.164.81.167' (ECDSA) to the list of known hosts.
Hi kdevkr! You've successfully authenticated, but GitHub does not provide shell access.
EC2 곡κ°ν€ λ±λ‘νκΈ°
μλ§μ‘΄ μΉ μλΉμ€μμ EC2 μΈμ€ν΄μ€λ₯Ό μ€νν λ ν€ νμ΄λ₯Ό μλμΌλ‘ λ§λ€μ΄μ£ΌκΈ°λ νλλ° μ΄λ―Έ λ§λ€μ΄μ§ SSH ν€ νμ΄λ₯Ό κ°μ Έμμ λ±λ‘νκ³ μ¬μ©ν μ μλλ‘ μ§μνκ³ μλ€. λ΄ μ»΄ν¨ν°μμ λ°κΈνλ 곡κ°ν€λ₯Ό κ°μ Έμμ λ±λ‘ν ν EC2 μΈμ€ν΄μ€μΈ 리λ μ€ μλ²μ μ μν μ μλμ§ νμΈν΄λ³΄μ.
PS C:\Users\Mambo\keypair> ssh -i win-mambo-ed25519.pem ec2-user@15.164.219.55
The authenticity of host '15.164.219.55 (15.164.219.55)' cannot be established.
ECDSA key fingerprint is SHA256:64Ca/STwUWZkN+ggo5jx6BCvwyhNRcCY5/xjk0SkSjU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '15.164.219.55' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-2-243 ~]$ cat ~/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOy21gZ45To8FNf6hilxV51QqT9JCBjIpVKCRlup7m4D window-mambo
EC2 μΈμ€ν΄μ€κ° νΌλΈλ¦ μλΈλ·μ μμΉνκ³ 22λ² ν¬νΈκ° νμ©λμ΄μλ€λ©΄ SSH ν€ νμ΄λ₯Ό μ¬μ©νμ¬ EC2 μΈμ€ν΄μ€μ μ μν μ μλλ°, μΈν°λ·μμ λ°λ‘ μ κ·Όν μ μλ νλΌμ΄λΉ μλΈλ·μ μμΉν EC2 μΈμ€ν΄μ€μ SSM μμ΄μ νΈλ₯Ό ꡬμ±νλ€λ©΄ μλ§μ‘΄ μΉ μλΉμ€μμ μ 곡νλ SSM μλν¬μΈνΈλ₯Ό μ¬μ©ν΄μ SSH μ μμ΄ κ°λ₯νλλ‘ λ§λ€ μ μλ€.
νΈλ¬λΈμν
μ§λ ED25519 κΈμ μ½μ΄λ³Έ λΆλ€μ΄λΌλ©΄ μλμ° μ»΄ν¨ν°μμ λ°κΈν ED25519 ν€ νμ΄λ₯Ό λ°κΈνκ³ μλμ° νκ²½μμ λΉλ°ν€λ₯Ό μ¬μ©ν΄μ μΈμ¦μ μλνλ©΄ ν€ νμμ΄ μ¬λ°λ₯΄μ§ μμμ μ€ν¨νλ λ¬Έμ κ° μλ€λ κ²μ νμΈνμ κ²μ΄λ€. μ§λλ² κΈμμλ λ¨μν μλλ λΆλΆμ μΈκΈνκ³ λ§λ¬΄λ¦¬νμμ§λ§ μ΄ λ¬Έμ μ λν΄μ μ κ·Έλ°κ²μΈκ°μ λν΄ κΆκΈν΄μ‘κ³ aws-cli/discussions/7074λ‘ κ΄λ ¨ λ¬Έμ μ λν΄μ μ§λ¬Έμ ν΅ν΄μ μμΈμ μ°Ύκ² λμλ€.
μλμ° νκ²½μμ AWS CLIλ₯Ό ν΅ν΄μ ν€ νμ΄λ₯Ό λ°κΈνκ³ λμ λΉλ°ν€ νμΌμ λν΄μ μλν°λ‘ μ΄μ΄λ³΄λ©΄ μμ κ°μ΄ UTF-16LE μΈμ½λ© νμκ³Ό CRLF κ°ν λ°©μμΌλ‘ λμ΄μλ κ²μ νμΈν μ μμλ€. OpenSSHμ ssh-keygenμΌλ‘ λ§λ€μ΄μ§λ ν€νμ΄ νμΌμ μ΄ν΄λ³΄λ©΄ UTF-8κ³Ό LFλ‘ λ§λ€μ΄μ§λλ° Git Bashμ ν¬ν¨λμ΄μλ dos2unixλΌλ λꡬλ₯Ό ν΅ν΄μ UTF-16LEλ‘ λμ΄μλ μΈμ½λ© νμμ UTF-8λ‘ λ³κ²½ν΄λ³΄κ³ μλν΄λ³Έκ²°κ³Ό μ μμ μΌλ‘ μ μμ μνν μ μμλ€.
$ dos2unix aws-mambo.pem
dos2unix: converting UTF-16LE file aws-mambo.pem to UTF-8 Unix format...
PS C:\Users\Mambo\keypair> ssh -i aws-mambo.pem ec2-user@3.34.188.47
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-2-42 ~]$
λν, μλμ° ν°λ―Έλμ΄ μλλΌ Git Bashμμ μλν΄λ³Έ κ²°κ³Ό λ€μκ³Ό κ°μ΄ λ€μνλ² ν€ νμμ΄ μ¬λ°λ₯΄μ§ μλ€λ λ©μμ§κ° λ°μνλλ° μ΄λ²μλ CRLFλ‘ λμ΄μλ κ°ν νμμ LFλ‘ λ³κ²½νκ²λλ©΄ μ±κ³΅μ μΌλ‘ μ μν μ μμμ νμΈνλ€.
$ ssh -i aws-mambo.pem ec2-user@3.34.188.47
Load key "aws-mambo.pem": invalid format
ec2-user@3.34.188.47: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
$ ssh -i aws-mambo.pem ec2-user@3.34.188.47
__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-10-0-2-42 ~]$
μ€λ¬΄μμ SSH ν€ νμ΄λ₯Ό μ λ¬λ°μλλ° SSH μ μμ΄ λΆκ°λ₯νλ€λ©΄ μ λ¬λ°μ ν€ νμ΄ νμΌμ μΈμ½λ© νμκ³Ό κ°ν νμμ μ΄ν΄λ³΄κ³ μμ κ°μ΄ λ³κ²½ν΄μ μλν΄λ³΄κΈ°λ₯Ό μΆμ²νλ€.
μ€λ¬΄μμλ μ‘°μ§ νΉμ μΈνλΌ νκ²½λ§λ€ λ€μν λ°©μμΌλ‘ μλ²μ μ μν μ μλ λ°©λ²μ μ ννλλ°μ. λ°°μ€μ² νΈμ€νΈλ‘ μ°μ μ μνκ±°λμ κ° μλ²λ§λ€ μ ν΄μ§ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό μ¬μ©νμ¬ μ΄λν΄μΌνκ±°λ μ¬μ§μ΄λ SSH ν€ νμ΄ μΈμ¦ λΏλ§ μλλΌ OTPλ₯Ό ν΅ν 2FA μΈμ¦μ μꡬνλλ‘ κ΅¬μ±νκΈ°λ ν©λλ€. μ λ μλ² μμ§λμ΄κ° μλλ―λ‘ SSH μ°κ²° μ 2FAμ ꡬμ±νλ κ²μ λͺ¨λ₯΄κΈ°μ μ΄ λΆλΆμ λν΄μλ λ³λλ‘ μ°Ύμ보μμΌκ² μ΅λλ€.