标签: openssh

ssh -o PreferredAuthentications:“密码”和“键盘交互”之间有什么区别?

双方PreferredAuthentications=passwordPreferredAuthentications=keyboard-interactive会提示输入密码,有啥它们之间的区别?

我谷歌搜索关键字ssh PreferredAuthentications password keyboard-interactive difference但没有找到答案。

我注意到的唯一区别是提示字符串(user@host's password:vs. Password:):

$ ssh -o PreferredAuthentications=password,keyboard-interactive my-host
root@my-host's password:
Password:
Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
Run Code Online (Sandbox Code Playgroud)

更新(2018-04-09):

为便于参考,以下内容来自jouell 的回答中提到的SSH:TDG 一书

"keyboard-interactive"用户身份验证主要用于PAM在服务器端进行身份验证。它提供与用户的多重质询-响应对话,其中服务器向用户发送文本查询,用户输入响应,并且该过程可以重复任意次数。因此,例如,您可以PAM为 SSH配置一个模块,该模块使用RSA 安全令牌一次性密码方案执行身份验证。人们对此感到困惑,因为默认情况下,"keyboard-interactive"身份验证通常只是在单个质询-响应周期中实现密码身份验证,只是提示输入密码,因此看起来与"password"验证。如果您不是为了不同的目的故意使用这两者,您可能希望禁用其中一个以避免最终用户混淆。

ssh authentication openssh

46
推荐指数
1
解决办法
4万
查看次数

“key_load_public:没有这样的文件或目录”是什么意思?

我一直在解决一个PubkeyAuthentication问题。当我使用详细模式时,我看到很多"key_load_public: no such file or directory"

显然,这些键存在于文件系统上,因此该消息似乎没有通常的含义:

$ ls -al ~/.ssh/id_*
-rw-------  1 jwalton  staff   751 Feb  4  2013 id_dsa
-rw-------  1 jwalton  staff   608 Feb 18  2015 id_dsa.pub
-rw-------  1 jwalton  staff   314 Feb  4  2013 id_ecdsa
-rw-------  1 jwalton  staff   180 Feb 18  2015 id_ecdsa.pub
-rw-------  1 jwalton  staff   464 Aug 23 18:15 id_ed25519
-rw-------  1 jwalton  staff   103 Aug 23 18:15 id_ed25519.pub
-rw-------  1 jwalton  staff  2546 Feb  4  2013 id_rsa
-rw-------  1 …
Run Code Online (Sandbox Code Playgroud)

linux ssh openssh

46
推荐指数
1
解决办法
10万
查看次数

有人可以解释 /etc/ssh/sshd_config 文件中的“PasswordAuthentication”吗?

此页面上,给出的解释是:

选项 PasswordAuthentication 指定我们是否应该使用基于密码的身份验证。为了增强安全性,此选项必须始终设置为 yes。

但它没有提供任何用例场景来阐明什么时候是或否是合适的。有人可以进一步详细说明吗?

linux security openssh ubuntu

44
推荐指数
3
解决办法
13万
查看次数

当多台主机共享相同的 IP 和 DNS 名称时,如何编辑 known_hosts?

我经常 ssh 进入一台双启动 OS X / Linux 计算机。两个 OS 实例不共享相同的主机密钥,因此可以将它们视为共享相同 IP 和 DNS 的两个主机。假设 IP 是192.168.0.9,名称是hostnamehostname.domainname

据我了解,能够连接到两个主机的解决方案是将它们都添加到~/.ssh/know_hosts文件中。然而,说起来容易做起来难,因为文件是散列的,并且每个主机可能有几个条目 ( 192.168.0.9, hostname, hostname.domainname)。因此,我有以下警告

Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9'
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来编辑known_hosts文件,同时保留散列。例如,如何找到与给定主机对应的行?如何为某些已知主机生成哈希?

理想的解决方案将允许我使用ssh连接无缝到这台计算机,无论是否我把它192.168.0.9hostname或者hostname.domainname,也如果它使用它的Linux hostkey或其OSX hostkey。但是,如果存在真正的中间人攻击,是否使用了除这两个之外的其他密钥,我仍然希望收到警告。

ssh openssh

41
推荐指数
3
解决办法
5万
查看次数

在本地 LAN 上禁用“永久添加 <host> ...”警告

我有以下内容ssh_config可以连接到本地 LAN 上的机器和 VM 中的机器:

Host 172.16.*.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Run Code Online (Sandbox Code Playgroud)

但是,每次我连接它都会产生警告:

$ ssh jdoe@172.16.4.11
Warning: Permanently added '172.16.4.11' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/jdoe/.ssh/id_ed25519': 
Run Code Online (Sandbox Code Playgroud)

我正在使用 OpenSSH 7.1。如何在本地 LAN 的每个连接上禁用警告?

ssh openssh

40
推荐指数
3
解决办法
3万
查看次数

如何从 ~/.ssh/config 禁用在 ssh_config 中设置的 SendEnv 变量

我在任何地方都找不到,所以我想知道我是不是唯一一个遇到此类问题的人。

默认情况下,Red Hat 和 Debian 上的 ssh 至少有一个 ssh_config 和 SendEnv 选项,用于在远程会话中传递 LC* 和 LANG 变量。如果不是 root 来更改 /etc/ssh/ssh_config,他如何禁用该行为?SendEnv 选项似乎正在累积,我看不到任何重置它的方法。

为了避免被问到,我需要避免将我的语言环境传递给测试机器,以避免对依赖语言环境作为机器默认设置的脚本和程序产生副作用。

ssh debian openssh redhat-enterprise-linux

35
推荐指数
2
解决办法
1万
查看次数

如何使用 Windows 10 的新 OpenSSH 和 PowerShell 维护 ssh-agent 登录会话

在我的 Ubuntu 机器上,我只是使用 Keychain 来维护一个保持登录状态的 ssh-agent。

我想要类似于 Windows 上的东西,因为 OpenSSH 是本机包含的。我正在使用带有众所周知的if [ -z "$SSH_AUTH_SOCK" ] ; then ...脚本的Git Bash,但这导致许多 ssh 代理被打开,我知道有人建议不要这样做(部分原因是这篇博文:http : //rabexc.org/posts/pitfalls-of-ssh -agents ) - 这就是让我获得 Ubuntu 钥匙串的原因。不再使用它的另一个原因是我正在将 PowerShell 作为我的主要 shell。

但我不确定如何在 Windows 上专门使用 PowerShellWin32-OpenSSH实现同样的事情。

谢谢!

ssh powershell openssh windows-10 windows-10-v1803

35
推荐指数
1
解决办法
4万
查看次数

每次连接时,OpenSSH 是否都会向 no-more-sessions@openssh.com 发送电子邮件?

当我尝试使用 连接到我的 EC2(Ubuntu 14.04.3)服务器时ssh -v server,我在日志末尾看到了这一点:

debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to <domain>.com ([192.168.1.42]:12345).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com  # <!-!-!-!-!-!- What's this?
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending env LC_CTYPE = en_US.UTF-8
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-55-generic x86_64)
Run Code Online (Sandbox Code Playgroud)

这是我的.ssh/config

Host server
  HostName domain.com
  User myuser
  IdentityFile ~/path/to/EC2Key.pem
  Port <portnumber>
Run Code Online (Sandbox Code Playgroud)

这似乎很正常。我可以在这里看到两个可能的原因:

  1. OpenSSH 试图以openssh.com …

ssh openssh ubuntu

28
推荐指数
1
解决办法
2万
查看次数

保存由 ssh-add 添加的身份,以便它们持续存在

我最近进行了设置,openssh所以我可以将它与git.

在设置它的过程中(根据这篇文章),我运行了以下命令:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>
Run Code Online (Sandbox Code Playgroud)

一段时间后,在我注销并重新登录后,我尝试使用时git push出现错误。此错误的解决方案是再次运行相同的命令。

请告诉我我该怎么做

  • 保持ssh-agent运行,这样我就不必开始新的了
  • 记住我添加的键,这样我就不必每次都添加它们

澄清一下,我使用 zsh,因此某些 bash 功能在我的 .zshrc 中不起作用。

linux ssh openssh ssh-agent

27
推荐指数
2
解决办法
2万
查看次数

如何命名openssh公钥和私钥对?

我现在使用公钥/私钥对已经很长时间了。几乎在同一时间,我一遍又一遍地问自己,我应该使用哪个文件扩展名。似乎至少对于公共和私有(openssh)密钥根本没有约定?

我的意思是在 PuTTy 中.ppk,“PuTTy 私钥”有一个特殊的扩展名,公钥存储在没有扩展名的情况下,或者带有.pub. 我个人不喜欢使用.pub,因为微软已经在 MS Publisher 中使用了这个扩展。因此,对于 PuTTy,我使用相同的名称存储两个密钥,并将其添加.ppk到私钥中,而没有添加到公钥中。对于这种情况,我可以接受。我可以确定哪个密钥是公共密钥,哪个是私有密钥,而私有密钥仅用于 PuTTy。

但是我应该如何处理私有的 openssh 密钥?只存储它而不扩展?或者使用类似的东西.openssh?此外,如果真的没有约定,如果有人只是考虑一下并为自己整理出某种概念,我也将不胜感激......

提前致谢!

ssh openssh putty

27
推荐指数
2
解决办法
6万
查看次数