SSH 클라이언트가 비밀번호 인증 만 사용하도록 강제하는 방법은 무엇입니까?


375

Ubuntu 11.04와 같은 pubkey auth를 사용하는 경우 ssh 클라이언트가 서버에 암호 인증만을 사용하도록 어떻게 설정할 수 있습니까? (키로 기본 로그인하는 서버에서 비밀번호를 테스트했기 때문에 필요했습니다)

방법을 찾았습니다.

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

이제 비밀번호를 묻는 메시지가 표시되지만 공식적인 방법이 있습니까?

답변:


578

나는 최근에 이것도 필요했고 이것을 생각해 냈습니다.

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

클라이언트가 비밀번호 인증을 허용하지 않도록 구성되어 있는지 확인해야합니다.


4
자동 인증에 Kerberos가 사용 된 환경에서 암호 프롬프트가 나타나도록 강제해야했으며, 특정 상황에서 비슷한 명령이 저에게 ssh -o GSSAPIAuthentication=no example.com
효과적이었습니다

21
좋은. -o PubkeyAuthentication=no내 경우 에만 충분했습니다.
mivk

10
친구 osx 노트북에 ssh하려면, 다음을 사용해야했습니다. -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no 대신
guido

4
이것은 나를 위해 작동하지 않습니다. 계속해서 말합니다 : Permission denied (publickey). 절대 비밀번호 프롬프트를 제공하지 않습니다.
reinierpost

7
ssh 호스트 가 비활성화되어 있기 때문에 @reinierpost입니다 PasswordAuthentication. 사실 암호 인증을 사용하지 않도록 설정하면 호스트에서 올바르게 작동하는지 테스트하고 싶기 때문에 여기에 있습니다.
RubberDuck

169

이 목적에 대한 지름길을 발견했습니다.

ssh user:@example.com

콜론 ( :)과 그 뒤에 빈 비밀번호를 적어 둡니다.


2
아직 문서가 없습니다. 실제로, 나는 OpenSSH 소스 코드를 통해 아무 소용이 없었습니다 (구문 분석 단계는 다소 비밀스럽고 아침입니다 :)). 나의 초기 동기 부여 : 빈 암호를 입력하면 많은 고객들이 암호를 mysql -u user -p
묻습니다.

43
이것은 적어도 내 경우에는 더 이상 작동하지 않는 것 같습니다. ssh클라이언트는 맹목적으로 관련이없는 개인 키를 사용하여 새로 설치된 서버를 인증하고 암호를 묻지 않고 최대 시도 횟수에 도달하여 계속 거부되었습니다. 이 첫 번째 연결에 대해 비밀번호 인증을 강제 실행하려면 -o PreferredAuthentications=password눈에 띄는 효과가없는 콜론 트릭 구문 을 사용해야했습니다 . 따라서이 트릭을 시도해 볼 가치가 있지만 일관된 행동으로 의존해서는 안됩니다.
WhiteWinterWolf

2
@ HalilÖzgür : 슬픈 소식, 기억하고 타이핑 하는 것이 훨씬 쉬웠다;)!
WhiteWinterWolf 2016 년

3
WhiteWinterWolf가 말한 @Qualcuno는 불행히도 더 이상 일부 플랫폼에서 작동하지 않습니다.
Halil Özgür

2
ssh_config 파일에 PasswordAuthentication no가 없는지 확인하십시오!
Braiam

32

scoopr가 게시 한 방법뿐만 아니라 ssh 클라이언트 구성 파일에서 호스트 별 옵션을 설정할 수 있습니다.

귀하의에서 .ssh디렉토리라는 파일을 만들고 config(이미 존재하지 않는 경우)에 대한 권한 설정 600, 당신은 다음 시작 섹션을 만들 수 있습니다

host <some hostname or pattern>

그런 다음 호스트 별 옵션을 설정합니다 (예 :

host bob.specific.foo
user fred

host *.home.example
user billy
port 9191

그래서 당신은 가질 수

host server.to.test
PubkeyAuthentication=no

그 파일에서

ssh server.to.test

옵션이 선택됩니다.


이 답변에 감사드립니다. 나는 내 항목을 ~/.ssh/config만들고 추가PubkeyAuthentication no
크레이그 런던

2
나를 위해 작동하지 않습니다.
reinierpost

11

나는 최근에 이것을 필요로했지만 위의 옵션 중 어느 것도 효과 가 없었습니다 ssh -v. -o스위치를 통해 전달 된 명령 행 옵션 이 내 ~/.ssh/config파일에 지정된 값으로 재정의 된 것으로 나타났습니다 .

효과가 있었던 것은 다음과 같습니다.

ssh -F /dev/null <username>@<host>

로부터 ssh매뉴얼 페이지

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

이 답변에 대한 크레딧 : 어떻게 ssh가 .ssh / config를 무시하도록 할 수 있습니까?


1
이것은 질문에 대답하지 않습니다. 에이전트에 키를 항상 저장할 수 있으며 접근 방식으로 클라이언트가 키를 사용할 수 없습니다.
Jakuje

흠, 내 대답에서 언급 한 문제뿐만 아니라 문제를 어떻게 해결할 것입니까?
adeelx

2
또한 표준 위치에 키가있는 경우 (질문과 같이) 구성의 존재 여부에 관계없이 키가 사용됩니다. 첫 번째 답변에서 언급 한 방법 중 하나를 사용합니다.
Jakuje

사실은 아니지만 Lubuntu 14.04에서 테스트했으며 표준 위치 ~/.ssh/config에 키가 있어도 지정하면 키가 사용되지 않습니다 -F /dev/null. ssh -v이 경우 출력이 도움이됩니다. 내 ssh 구성에 catch-all 항목이 있기 때문에 이전 답변과 같이 스위치를 *통해 전달 된 옵션을 존중하기보다는 공개 키를 사용하도록 선택 -o합니다.
adeelx

1
표준 위치는 ~/.ssh/id_rsa매뉴얼 페이지에 나와 있습니다. 이 경로는 클라이언트에서 하드 코딩됩니다. 테스트 할 때 올바른 사용자를 제공하십시오.
Jakuje

4

나는이 답변 중 몇 가지를 시도했지만 ssh -v내 공개 디렉토리에서 공개 키가 뽑히는 것을 계속 보여주었습니다. 그러나 가짜 신원 파일을 지정하면 나에게 속임수가되었습니다.

ssh -i /dev/null host

유지 - 나는 영구적으로 (APC에서 랙 장착 PDU에서 깨진 SSH 서버를 해결하려면 이렇게 할 필요 까지 보안에 관심 있다면 멀리 이런 일에서 - 그래서 내 config 파일에 옵션을 넣어 결국 :

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null

2

@scoopr 및 @Halil Özgür 답변이 저에게 효과적이지 않았습니다.

이것은 나를 위해 일했다 :

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

출처 : http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


13
질문은 비밀번호로 클라이언트 인증에 관한 것입니다. 이 답변은 서버 호스트 키가 알려진 호스트의 키와 일치하는지 확인하는 것입니다. 실제로 그것은 다른 질문에 대답하고 있습니다
Anigel

2

또한 BatchMode=yes.ssh / config 에는 활성화되어 있지 않습니다 . 그렇지 않으면 대화식 암호 프롬프트가 표시 될 가능성이 없습니다.


0

나는이 문제로 세계에서 유일한 사람 일지 모르지만 ssh다른 운영 체제 (cygwin 셸의 Windows에서 choco ssh)를 실행했습니다.which ssh

그래서 해결책은

 /usr/bin/ssh user@example.com

전체 경로를 참고하십시오. 나는 달리기 후에 이것을했다cyg-get openssh

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.