AnyBucket이 SSH 설정을 사용하는 방식

따로 채워 넣을 키 저장소가 없습니다. SFTP를 위해 AnyBucket은 터미널이 쓰는 것과 같은 프로그램인 /usr/bin/ssh를 실행합니다. 그래서 다음이 그대로 적용됩니다.

  • ~/.ssh에 있는 개인 키가 작동합니다.
  • SSH 에이전트에 로드된 키가 작동합니다.
  • HostName, User, IdentityFile, ProxyJump를 포함해 ~/.ssh/config의 모든 Host 블록이 적용됩니다.
  • 호스트 키는 터미널과 함께 쓰는 ~/.ssh/known_hosts와 대조합니다.

기억할 원칙은 이것입니다. 터미널에서 ssh user@host가 작동하면 AnyBucket에서도 작동합니다. 서버가 암호를 요구하는 경우, 암호는 로그인 키체인에 저장됩니다.

키를 만들어 서버에 추가하기

아직 키가 없다면 다음을 따르세요.

  1. 터미널을 열고 ssh-keygen -t ed25519를 실행하세요. Return 키를 눌러 기본 파일 ~/.ssh/id_ed25519를 그대로 쓰고, 암호 문구를 정하세요.
  2. 공개 키인 ~/.ssh/id_ed25519.pub를 서버의 ~/.ssh/authorized_keys에 추가하거나, 서버 관리자에게 보내세요. .pub가 없는 파일은 절대 공유하지 마세요.
  3. 테스트하세요. ssh user@host가 서버 암호를 묻지 않고 로그인되어야 합니다.

매번 암호 문구를 입력하지 않으려면 ssh-add로 키를 에이전트에 추가하세요. macOS는 암호 문구를 키체인에 보관할 수 있습니다.

~/.ssh/config에서 서버에 이름 붙이기

Host 블록은 서버에 짧은 이름과 접속 설정을 부여합니다.

Host staging
  HostName staging.example.com
  User deploy
  IdentityFile ~/.ssh/id_ed25519

이제 ssh staging은 그 키를 사용해 deploy 사용자로 로그인합니다. AnyBucket에서 SFTP로 서버 staging에 연결하면 같은 블록이 적용됩니다. AnyBucket이 터미널과 똑같이 그 이름을 ssh에 넘기기 때문입니다.

점프 호스트를 거쳐 서버에 접속하기

많은 서버는 배스천 호스트, 즉 점프 호스트를 거쳐야만 접속할 수 있습니다. 터미널에서 한 번만 접속할 때는 ssh -J bastion app이라고 씁니다. 계속 쓰려면 ProxyJump를 사용하세요.

Host bastion
  HostName bastion.example.com
  User me

Host app
  HostName 10.0.1.20
  User deploy
  ProxyJump bastion

터미널에서 ssh app으로 테스트하세요. 로그인되면 AnyBucket을 SFTP로 app에 연결하세요. 앱에서 따로 설정할 것 없이 연결이 알아서 배스천 호스트를 거칩니다. 여러 단계도 같은 방식으로 이어지며, ProxyJump 뒤에 쉼표로 구분한 목록을 쓰면 됩니다.

호스트 키: ‘아직 알려지지 않음’ 또는 ‘변경됨’

서버에 처음 연결할 때는 그 키가 아직 ~/.ssh/known_hosts에 없으므로, AnyBucket은 터미널처럼 신뢰하기 전에 묻습니다. 서버 관리자가 공개한 지문과 비교하세요.

AnyBucket이 키가 변경되었다고 알리면 멈추고 이유를 확인하세요. 서버를 다시 구축하거나 다시 설치한 뒤라면 새 키는 예상된 일입니다. 그렇지 않다면 연결하지 마세요. 키가 바뀌었다는 것은 생각하는 서버와 통신하고 있지 않다는 뜻일 수 있습니다. 자세한 내용은 문제 해결을 참고하세요.

작동하지 않을 때

  1. AnyBucket에서 쓰는 것과 정확히 같은 호스트 이름으로 먼저 터미널에서 시도하세요: ssh staging. 실패한다면 문제는 앱이 아니라 SSH 설정에 있습니다.
  2. -v를 추가하면(ssh -v staging) ssh가 어떤 키와 설정 줄을 시도하는지 볼 수 있습니다.
  3. ssh-add -l로 에이전트를 확인하세요. 에이전트가 가진 키 목록이 표시됩니다.
  4. 권한을 확인하세요. ssh는 다른 사용자가 읽을 수 있는 개인 키를 거부합니다. chmod 600 ~/.ssh/id_ed25519로 해결됩니다.

그래도 해결되지 않나요? SFTP 키나 점프 호스트가 작동하지 않을 때를 참고하거나, 민감한 정보를 뺀 ssh -v 출력을 지원팀에 이메일로 보내 주세요.