当我ssh到一台机器时,有时我会收到此错误警告,并提示说"是"或"否".从自动ssh到其他计算机的脚本运行时,这会导致一些问题.
警告信息:
The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.
Run Code Online (Sandbox Code Playgroud)
有没有办法自动说"是"或忽略这个?
我目前正在使用带有PHP插件的NetBeans 6.9和来自远程服务器项目的PHP应用程序.但是,每次上传或下载时,我都会收到一条警告提示:
无法建立主机x的真实性.RSA密钥指纹是y.您确定要继续连接吗?
我正在连接到我自己的服务器,所以是的,我一直都相信它.获取该弹出窗口很烦人,我希望能够简单地检查密钥是否存储密钥并告诉我密钥是否更改或只是连接到我告诉它的服务器,而不管RSA密钥指纹.
我正在使用ssh并为我的系统设置无密码ssh.在脚本中使用ssh工作正常,但如果用户指定的主机没有无密码的ssh设置,则脚本会提示输入密码并挂起.
如果没有为主机设置无密码ssh,我怎么能避免密码提示并返回错误?
我想制作一个Android应用程序,该应用程序注册用户指纹(从设备的指纹扫描仪中获取)并将其存储在数据结构或密钥存储提供程序中,下一次用户放置指纹扫描仪时,应该从存储在数据中的指纹进行身份验证结构或来自android keystore provider。如果有人可以帮助我如何解决这个问题。提前致谢。
java android rsa-key-fingerprint android-studio android-fingerprint-api
我正在尝试使用WinSCP .NET程序集连接到WinSCP服务器。我遇到的问题是它炸弹检查主机密钥指纹。我已经创建了一个RSA密钥。我的代码如下:
var server = new WinSCP.SessionOptions();
server.UserName = "ftp_user";
server.Password = "******";
server.HostName = "192.x.x.x";
server.Protocol = WinSCP.Protocol.Sftp;
server.SshHostKeyFingerprint =
"9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";
var session = new WinSCP.Session();
session.Open(server);
Run Code Online (Sandbox Code Playgroud)
在SshHostKeyFingerprint属性分配中,出现以下错误:
SSH主机密钥指纹“ 9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb”与模式/(ssh-rsa | ssh-dss不匹配)?\ d +([0-9a-f] {2}:){15} [0-9a-f] {2}(;(ssh-rsa | ssh-dss)?\ d +([0-9a- f] {2}:){15} [0-9a-f] {2})* /
如果我没有看错,它正在检查15个2个字符集,并分配了16个设置值。我从服务器获得了此值。
更新:
我所缺少的是指纹类型(ssh-dss或ssh-rsa)及其大小(1024,2048等等)。因此,答案如下:
server.SshHostKeyFingerprint =
"ssh-rsa 1024 9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";
Run Code Online (Sandbox Code Playgroud)
如果我正确阅读了正则表达式,它不会让您知道在指纹类型之后需要指纹大小。
我希望这可以帮助其他人。感谢大家的见解和投入。
我希望将RSA公钥转换为可以用作SSH公钥的东西.
目前我有Bouncy Castle为我提供了一个如下所示的公钥:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1Y5300i8bN+cI2U3wJE
Kh3xG/.........jbuz+WB0vvG
P25UwCle2k5siVMwbImEYsr+Xt0dsMmGVB3/6MHAqrM3QQdQ8p2E5TyzL+JYa1FT
gwIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
我希望它具有与此类似的RFC 4716格式:
ssh-rsa AAAAB3NzaC1yc2.......G1p2Ag3mZLFsks7RNHVLgMsGIAikQ==
到目前为止,我的代码使用Bouncy Castle看起来像这样:
var r = new Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator();
r.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
var keys = r.GenerateKeyPair();
var stringWriter = new StringWriter();
var pemWriter = new PemWriter(stringWriter);
pemWriter.WriteObject(keys.Private);
pemWriter.Writer.Flush();
stringWriter.Close();
PrivateKey = stringWriter.ToString();
stringWriter = new StringWriter();
pemWriter = new PemWriter(stringWriter);
pemWriter.WriteObject(keys.Public);
pemWriter.Writer.Flush();
stringWriter.Close();
PublicKey = stringWriter.ToString();
Run Code Online (Sandbox Code Playgroud)
如何重新格式化和编码密钥使其看起来像这样?
有没有人用Bouncy Castle或类似的东西创建SSH公钥?
我怎么知道 GitHub 服务器 rsa2 密钥指纹ssh-rsa 2048 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48与他们在其网站上显示的指纹相匹配,SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 (RSA)因为它们看起来不一样?
我正在设置我的 GitHub 帐户以使用 SSH 提交代码。在第一次访问尝试和腻子想要缓存密钥时出现问题。从网络上足够多的来源中,我发现足以确信它实际上是 GitHub,但我如何亲自验证它?意识到欺骗风险等,但这不是问题。
第一次ssh-rsa 2048尝试后,我从腻子中获得了指纹git clone [repository ssh url]。
是否有为 JWK 创建指纹(又名指纹)的标准规范方法?
从我阅读的内容来看,标准似乎没有定义 akid应该如何指定,我觉得这很奇怪。对我来说,它是最重要的,因为它是一个确定性的值,而不是一个需要查找表的值,这样其他人可以通过拥有公钥轻松地重新创建密钥 ID。
我知道 SSH 指纹和 X.509 指纹是标准化的,但是对于使用 JWK 的所有环境(尤其是浏览器)来说,这些似乎不是一个合适的解决方案,因为它们对于幼稚的实现来说太复杂了,并且包括能够操作的库这样(即伪造)会浪费大量内存、带宽和虚拟机编译时间。
官方称它为“指纹”而不是“指纹”。
作为标题,如何从Java中的SSH RSA公钥计算指纹?我从sample.pub获得了一个rsaPublicKey对象,并使用库Apache Commons Codec计算了指纹,
DigestUtils.sha256Hex(rsaPublicKey.getEncoded());
但是使用ssh-keygen命令
ssh-keygen -E sha256 -lf sample.pub
sample.pub 时却得到了不同的指纹
,如下所示
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAsuVPKUpLYSCNVIHD+e6u81IUznkDoiOvn/t56DRcutRc4OrNsZZ+Lmq49T4JCxUSmaT8PeLGS/IC946CNQzFwMh++sVoc19UUkZtRaDgiYn+HkYk8VW4IFI1dKfXomKSbX/lB+ohzLzXLVP2/UJgfBmdaE10k+6b+/Yd8YGXIeS8/Z9zToHPo0ORNSGIolgq3xMXUtfAOK/0KC6IFc/FuvuOSAG1UWup91bcm5GSXv4BWWjgFtOxCLIknYjsDah4qfrP8Olp5eUDhn/65xRcZsmRXoYe1ylhlSjJoPDFWXVs9npwqQmi3JaZtgg7xJxMu1ZcdpYxoj280zM9/6w1Lw==
输入命令后
ssh -p 8101 karaf@docker-ip onos1
Run Code Online (Sandbox Code Playgroud)
我收到错误
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:rV+69MOdHKanIvP41a9Xspug6am7/BV7CHVjhxxxxx.
Please contact your system administrator.
Add correct host key in `/home/pranav/.ssh/known_hosts` to get rid of this message.
Offending RSA …Run Code Online (Sandbox Code Playgroud) 我使用 Pixel 2xl 和 MacBook Pro 进行开发。我有一个问题几个月来一直困扰着我。当我将手机连接到电脑时,我会看到经典的弹出窗口,询问“允许 USB 调试?计算机的 RSA 密钥指纹是:xx:xx:xx:xx:xx:.....xx:xx”,然后出现框与“始终允许来自这台计算机”和两个按钮“取消”和“允许”。问题是我得到了两个不同的密钥指纹,其中一个不适用于 android studio,我必须单击“取消”并打开和关闭“USB 调试”开关,直到我最终获得正确的密钥。我尝试按照如何在 Mac 上完全卸载 Android Studio?卸载 Android Studio 和所有相关文件夹。 当电脑上没有安装任何东西时,我仍然在消息中收到流氓密钥指纹。我尝试删除唯一的 adbkey.pub 并且只更改了好的密钥指纹。我尝试在设备上“撤销 USB 调试授权”,但没有任何效果。我运行“ps aux | grep adb”,当我仍然得到恶意密钥指纹时,没有 adb 正在运行。我的电脑上似乎也没有其他 adbkey 文件。
这个流氓钥匙指纹从哪里来?如何摆脱它?这真的让我的成长日子变得非常痛苦。谢谢
我已按照以下步骤创建和添加 SSH 密钥,并删除了文件夹 ~/.ssh/ 中所有先前创建的密钥
然后我尝试:
我得到:
无法确定主机“github.com (140.82.121.4)”的真实性。ED25519 密钥指纹为 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU。该密钥没有任何其他名称。您确定要继续连接吗(是/否/[指纹])?
(该密钥是我之前创建和删除的密钥之一)
我可以做什么来克服这个问题?
ssh ×5
ssh-keys ×4
android ×2
c# ×2
java ×2
.net ×1
adb ×1
bash ×1
bouncycastle ×1
ecdsa ×1
fingerprint ×1
git ×1
git-bash ×1
github ×1
jwk ×1
linux ×1
localhost ×1
netbeans ×1
netbeans-6.9 ×1
php ×1
public-key ×1
winscp ×1
winscp-net ×1