Ssh
如何在 ssh 命令中禁用重試密碼
我希望 ssh 命令只允許一次輸入密碼的機會,如果第一次密碼錯誤,ssh 將返回
Permission denied (publickey......).
是否有一個標誌告訴 ssh 隻請求一次密碼?
代替:
[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103 pokemon@192.168.1.103's password: Permission denied, please try again. pokemon@192.168.1.103's password: Permission denied, please try again. pokemon@192.168.1.103's password: Permission denied (publickey.....).
我想:
[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103 pokemon@192.168.1.103's password: Permission denied (publickey.....).
解決方案必須在客戶端(例如 ssh 命令的某些標誌或使用管道),我無法觸摸
sshd_config
,或任何其他系統配置文件。因為 - 通常 - 我建構了訪問 LAN 中伺服器的第 3 方軟體(因此我無法生成密鑰或配置系統文件),所以密碼保存在數據庫中(因此不需要第二次嘗試)。在我的程式碼中,如果我能夠假設我只有一次嘗試ssh
/scp
它將簡化相關程式碼。
在 sshd 配置手冊頁中
man 5 sshd_config
:MaxAuthTries Specifies the maximum number of authentication attempts permitted per connection. Once the number of failures reaches half this value, additional failures are logged. The default is 6.
因此,設置
MaxAuthTries 2
將是您需要的設置。sshd
之後需要重新啟動(必須以root身份執行):/etc/init.d/ssh restart
或者
service ssh restart
在客戶端,這可以使用 ssh 設置進行設置(查看
man 5 ssh_config
可以應用的設置):NumberOfPasswordPrompts Specifies the number of password prompts before giving up. The argument to this keyword must be an integer. The default is 3.
所以編輯你的
~/.ssh/config
文件並添加:Host <name_or_ip_of_host|*> NumberOfPasswordPrompts 1
您在
<name_or_ip_of_host|*>
命令行上使用的規範 IP 或主機名,或*
所有主機連接嘗試的位置。您也可以在命令行上指定它,而無需編輯您的/.ssh/config
文件:ssh -o NumberOfPasswordPrompts=1 user@hostname