如何将值传递给 ssh 命令,以便在主机上启动的环境以我选择的某个环境变量开始?
编辑:目标是将当前的 kde 桌面(从 dcop kwin KWinInterface currentDesktop )传递到创建的新 shell,以便我可以将 nfs 位置传回原始服务器上的JEdit实例,这对于每个 KDE 桌面都是唯一的。(使用像emacsserver / emacsclient这样的机制)
多个 ssh 实例可以同时运行的原因是,当我设置环境时,我向不同的机器打开了一堆不同的 ssh 实例。
到目前为止,我已经为我需要登录的每个服务器创建了一个单独的 SSH 密钥(为了每个目的,更准确)。我这样做是出于安全感,就像不同网站的不同密码一样。
拥有多个 SSH 密钥真的能提高安全性吗?它们都在同一台机器上使用,位于同一个 ~/.ssh 中,大多数甚至具有相同的密码。
所以...我应该放弃整个系统而只使用一个 SSH 密钥来处理所有事情吗?
[更新 2015-08-05] Github 发布您的公钥,并且您的 SSH 客户端可能会将您的所有公钥发送到每个服务器,具体取决于配置,因此,如果您担心 3rd 方 SSH 服务器在连接时知道您的身份,您应该使用多个 SSH 密钥,尽管在我看来这是偏执的。
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location
Run Code Online (Sandbox Code Playgroud)
上面的脚本不正确吗?我做得不对吗?
我去了.ssh目录,看到远程服务器在known_hosts文件中。
但是,当我做没有任何文件作为参数的普通 scp 时,它仍然要求输入密码
scp events*$date*_QA.log $remote_user@$remote_server:$remote_location
Run Code Online (Sandbox Code Playgroud)
如何在我的命令中包含密钥文件?
sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj
Run Code Online (Sandbox Code Playgroud) 我试图了解 ssh -L 到 -D 之间的差异。除了 -D 仅是 SOCKS 之外还有什么吗?
谢谢!
我的新服务器安装看起来很奇怪:

有没有办法调整它的大小以使用整个终端窗口?
我正在尝试通过 ssh 连接到我无法控制的 CentOS 服务器。
.ssh 中的配置:
tim@tim-UX31A:~$ cat ~/.ssh/config
User root
PasswordAuthentication no
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
我的密钥文件的权限:
tim@tim-UX31A:~$ ls -l ~/.ssh/id_rsa*
-rw------- 1 tim tim 3326 Okt 20 17:28 /home/tim/.ssh/id_rsa
-rw-r--r-- 1 tim tim 746 Okt 20 17:28 /home/tim/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
我无法理解的连接日志:
tim@tim-UX31A:~$ ssh -vvv root@10.0.12.28
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /home/tim/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "10.0.12.28" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting …Run Code Online (Sandbox Code Playgroud) 我想ssh example.com 'ls'按照 ssh 联机帮助页执行类似的操作:
如果指定了命令,它将在远程主机上执行,而不是在登录 shell 上执行。
所以会发生什么是ls显示其输出然后 ssh 退出。
我无法弄清楚如何打开完整的登录外壳,然后在该外壳内运行命令。运行命令后让 shell 保持打开状态。好像我手动完成了以下操作:
localhost$ ssh example.com
example.com$ ls
/folder1
/folder2
example.com$ _
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
虽然我了解如何在家庭网络内将文件发送到我的服务器和从我的服务器发送文件,但是当我在外面时,例如在星巴克,我如何将文件从我的服务器发送到我的本地机器?
虽然在这种情况下我可以从本地机器 scp 到我的服务器,但我还没有弄清楚如何使用命令行从家里获取文件。有什么建议?
我可以将文件复制到远程 Linux 机器上,没有问题
scp file user@host: /pathtowrite_file
Run Code Online (Sandbox Code Playgroud)
但是,我很难将文件从一台 linux 机器写入到另一台机器。这是我的尝试:
echo 'Some Text' > /remotefile.txt | ssh user@remotehost
Run Code Online (Sandbox Code Playgroud)
我得到的通知是
标准输入:不是 tty
无论如何,远程机器上的文件没有反映发送的“Some Text”的文本。
openssh 似乎改变了它显示关键指纹的方式。
我正在尝试从客户端机器 ssh 到服务器:
客户端将服务器密钥的 md5 哈希报告为 16 对十六进制数字的序列,如下所示:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
服务器默认使用 sha256 哈希,但由于这个答案,我可以通过运行强制它提供 sha1 哈希:
[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub
我希望结果如下所示:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
但我得到了这个:
256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI root@host.local (ECDSA)
在我看来,现在显示的是指纹的 base64 编码版本,而不是十六进制数字。
如何以与(旧)客户端报告的格式(冒号分隔的十六进制数字,sha1 哈希)相同的格式获取服务器密钥的校验和,以检查它们是否相同?
编辑: 旧版本的 SSH 提供md5校验和,而不是我错误地认为的 sha1 校验和。在 -E 选项中使用该校验和(正如现在接受的答案应该说明的那样)可提供所需的输出。
ssh ×10
linux ×3
scp ×2
bash ×1
byobu ×1
command-line ×1
freebsd ×1
home-server ×1
openssh ×1
ssh-keys ×1
ssh-tunnel ×1
sshd ×1
terminal ×1