작업 서버에 SSH로 접속하려고 하는데 이 오류로 인해 몇 달 동안 문제가 발생했습니다. 내 파일 config
( ) 의 다른 모든 옵션은 ~/.ssh/config
제대로 작동하지만 어떤 이유로 SecurityKeyProvider가 작동하지 않습니다. 구경하다:
Host [work-server]
HostName [work-server.work.com]
SecurityKeyProvider /usr/local/lib/libwindowsfidobridge.so
IdentityFile ~/.ssh/id_ecdsa_sk
ServerAliveInterval 60
ForwardX11Trusted no
ForwardX11 no
ForwardAgent no
ssh -o SecurityKeyProvider=/usr/local/lib/libwindowsfidobridge.so me@[work-server.work.com]
하지만 어떤 이유 에서든 명령줄에서 실행해야 합니다.
ssh me@[work-server.work.com]
답변1
(이 답변에서 나는 당신이 사용하고 있는 것을 난독화하지 않기로 결정했습니다 [
. ]
)
Host work-server
ssh work-server
예를 들어 전화하면 ssh me@work-server
일치합니다.아니요또는 로 전화하면 일치합니다 ssh work-server.work.com
.ssh [email protected]
파일 뒤에 오는 내용은 HostName work-server.work.com
관련이 없습니다. 값은 Host
명령줄에서 사용한 호스트 이름과 일치시키려는 시도입니다. HostName
로그인할 실제 호스트 이름을 지정하며 어떤 것과도 일치하려고 시도하지 않습니다.
이는 귀하의 구성이 에서 사용되지 않음을 의미합니다. "다른 모든 옵션은 [...] 잘 작동합니다"라고 썼지만 이는 단지 환상일 뿐입니다. 구성에서 다른 많은 옵션이 어쨌든 기본값으로 설정되어 있기 때문입니다. 따라서 구성이 작동하는 것과 작동하지 않는 것 사이에는 차이가 없습니다. 기본값은 명령줄에 지정된 이름이고 정확히 올바른 이름을 지정했기 때문에 작동한다고 합니다. 알고 보니 문제는 중요한 차이를 만드는 첫 번째 옵션에 있습니다.ssh [email protected]
HostName
SecurityKeyProvider
Host
와 의 차이가 HostName
직관적이지 않다면 다음 예를 고려해보세요.
Host foo
HostName bar
# config A here
…
Host baz
HostName bar
# config B here
…
ssh foo
bar
구성 A는 연결에 사용되고 ssh baz
구성 B는 연결에 사용됩니다. bar
따라서 이 전체 설정은 동일한 호스트에 대해 두 개 이상의 사전 정의된 구성이 필요하고 호출 시 그 중 하나를 쉽게 선택하려는 경우에 유용합니다 ssh
. ssh bar
match도 match도 아니므 Host foo
로 Host baz
A나 B도 사용하지 않습니다. Host bar
구성 ssh bar
(예: 구성 C) 을 추가하고 정의할 수 있습니다 . 또는 bar
이미 존재하는 행 중 하나에 추가할 수 있습니다 Host
. 예를 들어 첫 번째 행을 만들면 Host foo bar
둘 다 구성 A를 사용 ssh foo
하게 됩니다 (그리고 도착하기 때문에 연결됩니다 ).ssh bar
bar
Hostname bar
귀하 의 경우에는 ssh me@work-server
.if를 사용하십시오.ssh work-server.work.com
반품구성을 사용하려면 다음 줄 work-server.work.com
에 추가하세요.Host
Host work-server work-server.work.com
# the rest of your config here