我一直在尝试ssh-add使用运行 Raspbian 的 RaspberryPi。
我可以开始ssh-agent,当我这样做时,会在终端中提供以下输出:
SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;
Run Code Online (Sandbox Code Playgroud)
如果我运行,ps aux | grep ssh我可以看到它正在运行。
然后我尝试运行ssh-add以添加我的密钥密码,我得到以下信息:
Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我在 SSH shell 上有一个正在运行的程序。我想暂停它并在我回来时能够取消暂停它的执行。
我想到的一种方法是将其所有权转移到屏幕外壳,从而使其在那里运行。
是否有不同的方式进行?
我通过以下方式向代理添加了 ssh 密钥:
$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)
Run Code Online (Sandbox Code Playgroud)
重新启动后,代理不再添加此密钥:
$ ssh-add -l
The agent has no identities.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我无法通过 ssh 连接到要求diffie-hellman-group1-sha1密钥交换方法的服务器:
ssh 123.123.123.123
Unable to negotiate with 123.123.123.123 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Run Code Online (Sandbox Code Playgroud)
如何diffie-hellman-group1-sha1在 Debian 8.0 上启用密钥交换方法?
我曾尝试(如建议在这里),以
将以下行添加到我的 /etc/ssh/ssh_config
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr
Run Code Online (Sandbox Code Playgroud)重新生成密钥
ssh-keygen -A
Run Code Online (Sandbox Code Playgroud)重新启动 ssh
service ssh restart
Run Code Online (Sandbox Code Playgroud)
但仍然得到错误。
我想看看我的 known_hosts 文件中有哪些主机,但它似乎不是人类可读的。是否可以阅读它?
更具体地说,我可以通过多个名称连接到一个主机,我想从已知的主机文件中找出我期望的指纹。
更新:我正在使用 OpenSSH_5.3p1 Debian-3ubuntu7,OpenSSL 0.9.8k 2009 年 3 月 25 日
我的 known_hosts 文件中的一行看起来像这样,
|1|guO7PbLLb5FWIpxNZHF03ESTTKg=|r002DA8L2JUYRVykUh7jcVUHeYE= ssh-rsa AAAAB3NzaC1yc2EAAFADAQABAAABAQDWp73ulfigmbbzif051okmDMh5yZt/DlZnsx3DEOYHu3Nu/+THJnUAfkfEc1XkOFiFgbUyK/08Ty0K6ExUaffb1ERfXXyyp63rpCTHOPonSrnK7adl7YoPDd4BcIUZd1Dk7HtuShMmuk4l83X623cr9exbfm+DRaeyFNMFSEkMzztBYIkhpA2DWlDkd90OfVAvyoOrJPxztmIZR82qu/5t2z58sJ6Jm2xdp2ckySgXulq6S4k+hnnGuz2p1klviYCWGJMZfyAB+V+MTjGGD/cj0SkL5v/sa/Fie1zcv1SLs466x3H0kMllz6gAk0/FMi7eULspwnIp65g45qUAL3Oj
Run Code Online (Sandbox Code Playgroud) 我想制作一个自动脚本,该脚本调用ssh-keygen并创建一些稍后将使用的发布/私有密钥对。原则上一切正常....
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
...除了它要求我提供加密密钥的密码。这使得 - 目前 - 自动化变得困难。
我可以通过命令行参数提供密码-N thepassphrase,以防止出现提示。我什至不希望拥有密钥——另外通过加密保护——并且希望密钥对是明文。
这个问题的(最佳)解决方案是什么?
-q据称意味着“安静/静音”的选项仍然无法避免密码短语交互。我也没有找到这样的东西
ssh-keygen ... -q --no-passphrase
请不要开始说教或教导我“缺少密码”的利弊,我知道这一点。在交互式表单中(不是作为脚本),用户只需按两次 [ENTER],密钥将被保存为纯文本。这就是我想在这样的脚本中实现的目标:
#!/bin/bash 命令 1 命令 2 var=$(command3) # 这不应该停止脚本并要求输入密码 ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
有时我的 SSH 会话会因一条Write failed: Broken pipe消息而断开连接。这是什么意思?我怎样才能让我的会话保持打开状态?
我知道screen,但这不是我要找的答案。我认为这是一个sshd配置选项。
很多时候,我会通过 ssh 进入一个新客户端的机器来更改他们的网站配置,而无需对服务器配置了解太多。我已经看到了一些获取有关您正在使用的系统的信息的方法,但是是否有一些标准命令可以告诉我我使用的是哪个版本的 Unix/Linux 以及基本系统信息(例如它是否是 64 位系统)?与否),诸如此类?
基本上,如果你刚刚登录到一个盒子并且对它一无所知,你会检查什么东西,你会使用什么命令来做到这一点?
我必须编辑一些放置在我可以通过 ssh 访问的服务器上的文件。
我更愿意vim在我的工作站上自定义编辑这些文件(我无权更改vim远程服务器上的设置)。有时我想用sublime text或其他 GUI 编辑器编辑文件。
当然,我可以下载这些文件,在本地编辑它们并将它们上传回服务器。有没有更优雅的解决方案?
有没有办法在不杀死整个终端的情况下断开与无响应的 SSH 会话的连接?具体来说,我正在使用 konsole,我正在使用的机器有时会挂起,但实际上并没有死(从而终止连接)。所以 SSH 就挂了,我必须关闭终端并打开一个新的终端来尝试 ssh 回到它或做其他任何事情。有没有办法有效地 ctrl+c 退出 ssh 会话?