SSH 구성 파일에서 사용자를 강제하는 방법

SSH 구성 파일에서 사용자를 강제하는 방법

특정 호스트의 사용자에게 접근하려고 합니다. 나는 이것을 만났다요점필요한 각 도메인 계정에 대해 새 호스트 별칭을 만드는 단계를 제거하면 개선할 수 있습니다.

~/.ssh/config

Host github.com bitbucket.org bitbucket.com
    User git

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes
  IdentityFile ~/.ssh/%r@%h_id_rsa

Hostname안타깝게도 , 및 기타 속성과 달리 이를 Port설정해 User git도 값이 변경되지 않습니다.

$ ssh -Tv [email protected]

GitHub는 여전히 사용자 인증을 시도하고 있습니다 tarranjones.git

debug1: Authenticating to github.com:22 as 'tarranjones'

해결책이 있나요?

답변1

명령줄에 지정된 사용자를 재정의할 수 없습니다. 기본값은 지정되지 않은 경우에만 제공됩니다(~/.ssh/config에 기본값이 제공되지 않으면 whoami반환된 로그인 이름이 사용됩니다). 따라서 다음 명령을 사용하면 예상대로 작동합니다.ssh -Tv github.com

다음과 같이 실제 호스트 이름에 해당하는 값뿐만 아니라 실제로 Host를 임의의 값으로 설정할 수 있습니다.

Host gh
    Hostname gh
    User git

그러면 그것을 사용할 수 있습니다 ssh -Tv gh.

답변2

Host *다음을 삭제할 수도 있습니다.

IdentityFile %d/.ssh/%r@%h_id_rsa
Protocol 2
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes

Host github.com bitbucket.org bitbucket.com
  User git

명령줄에서 사용자 이름을 지정하지 마십시오. 이렇게 하면 구성의 사용자 이름을 덮어쓰게 됩니다.

답변3

IdentityFile(~/.ssh/%r@%h_id_rsa)에서는 %r인증 %h에 사용되는 원격 사용자 및 원격 호스트와 항상 동일합니다.

이 예에서는 내가 변경했습니다.Hostname

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  Hostname newhostname.com

시험

$ ssh -Tv [email protected]

결과

debug1: Authenticating to github.com:22 as 'tarranjones'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

이 예에서는 변경했습니다.User

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  User git

시험

$ ssh -Tv [email protected]

이제 원격 호스트 이름은 변경되지 않지만 변경되면 해당 IdentityFile 이름이 잘못되었음을 의미합니다.

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

percent_expand원격 호스트 이름을 사용하면 %h명명된 ID 파일에서는 작동하지 않습니다. 인증에 사용되는 원격 호스트 이름과 다르도록 하려면 항상 이를 하드코딩해야 합니다.

내가 생각할 수 있는 최선은 이것이다.

#Set Git User Domains
Host *-github.com *-bitbucket.org *-bitbucket.com
  User git

#IdentityFile
Host tarranjones-*
  IdentityFile ~/.ssh/tarranjones@%h_id_rsa

Host otherusername-*
  IdentityFile ~/.ssh/otherusername@%h_id_rsa

#Hostnames
Host *-github.com
  Hostname github.com

Host *-bitbucket.com *-bitbucket.org
  Hostname bitbucket.org

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes

용법

$ ssh -Tv tarranjones-github.com

결과

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

업데이트된 하이라이트 보기

관련 정보