我在一台服务器上托管多个域。
我希望能够更改 bash 提示符中显示的主机名,以指示我在 ssh 进入服务器时选择的主机名。
我的提示如下:
\u@\h
Run Code Online (Sandbox Code Playgroud)
这显示为:
user@hostname
Run Code Online (Sandbox Code Playgroud)
我如何更改\h以显示我登录的域(blah.net、hmm.com 等)?
我有一个位于 backup.sh 文件(chmod 775)中的脚本:
rsync -e 'ssh -p 31234' -avlz --delete --stats --progress --copy-links admin@foo.xen.prgmr.com:/home/admin/rsync /home/myname/rsync/foo/
Run Code Online (Sandbox Code Playgroud)
当我手动调用它时,一切正常(并且我不必输入密码)。但是当我从 cron 调用它时,它就不起作用了。
我在同事的计算机上使用了相同的设置(与我具有相同的访问权限),并且效果很好。
怎么了?
当我 ssh 到 DOMAIN\user@localhosts-name 时,身份验证通过 gssapi-with-mic 工作正常:
debug3: remaining preferred: gssapi,publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait for reply
debug3: Wrote 112 bytes for a total of 1255
debug1: Delegating credentials
debug3: Wrote 2816 bytes for a total of 4071
debug1: Delegating credentials
debug3: Wrote 80 bytes for a total of 4151
debug1: Authentication succeeded (gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)
当我连接到另一台机器时,它似乎在 gssapi-with-mic 身份验证中途停止:
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait …Run Code Online (Sandbox Code Playgroud) 我尝试通过 ssh 连接
ssh -X user@host
Run Code Online (Sandbox Code Playgroud)
但我得到
$ xterm
xterm Xt error: Can't open display: xterm: DISPLAY is not set
$ echo $DISPLAY
# ... nothing
Run Code Online (Sandbox Code Playgroud)
在我的 sshd_config 中我有
X11Forwarding yes
X11DisplayOffset 10
Run Code Online (Sandbox Code Playgroud)
在/var/log/auth.log我得到
sshd[7396]: error: Failed to allocate internet-domain X11 display socket.
Run Code Online (Sandbox Code Playgroud) 为什么或为什么我在服务器 A 尝试连接到服务器 B 时收到此错误???
ssh root@zk.111.sf.development.cloudera.fu.com
Warning: the ECDSA host key for 'zk.111.sf.development.cloudera.fu.com' differs from the key for the IP address '107.170.xxx.xxx'
Offending key for IP in /root/.ssh/known_hosts:4
Matching host key in /root/.ssh/known_hosts:5
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
enter code here
Run Code Online (Sandbox Code Playgroud)
在服务器 AI 上执行此操作
eval `ssh-agent -s`
ssh-keyscan 107.170.xxx.xxx | tee -a /root/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
然后我尝试 ssh。哇..两个服务器事件都有相同的 pub 和 private 密钥。我正在尝试在服务器之间设置无密码身份验证。
我有一个设置,可以从我的本地计算机 ssh 到我的远程服务器(即 Google 计算实例)。我曾经能够从远程实例上的存储库进行克隆、推送和拉取,而无需向远程实例添加任何密钥,也无需向在线存储库添加任何新密钥(只需本地计算机中的公钥)。我相信远程实例正在使用本地的密钥来验证我的 Git 推送和拉取操作。
然而,当我在本地计算机上重新安装操作系统时,系统崩溃了。现在,当我尝试从远程实例连接 Github 服务器时,我得到以下信息:
无法克隆:
[lucas@ecoinstance]~/node$ git clone git@github.com:lucasExample/test.git test
Cloning into 'test'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
无法推送:
[lucas@ecoinstance]~/node/nodetest1$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
[lucas@ecoinstance]~/node/nodetest1$ git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
附加信息:
[lucas@ecoinstance]~/node/nodetest1$ ssh-add -l
Could …Run Code Online (Sandbox Code Playgroud) 我有一个 debian 服务器,区域设置设置为 hu_HU.UTF-8,如果我通过控制台登录,它可以在匈牙利语中完美运行。它也适用于 ssh 登录,直到我在 sshd 配置中禁用 PAM。从那时起,当我通过 ssh 登录时,区域设置被设置为 POSIX。
我尝试注释AcceptEnv LANG LC_*sshd_config 中的行,但问题仍然存在。我正在使用 UTF-8 字符集与 Putty 连接。
那么我该如何解决这个问题呢?
SSH-2 已经问世近十年了。我至少知道当前连接到我的服务器的所有计算机都使用更新的版本 2 协议。考虑到这一点,禁用或阻止 SSH-1 有任何好处(安全性或其他方面)吗?
我是否可以安全地禁用服务器通过 SSH 协议版本 1 进行的任何访问,同时仍然允许使用版本 2 的 SSH 客户端访问服务器,而不破坏任何内容?
(还有一个额外的问题,如果有人知道在哪里可以找到使用统计信息)即使该服务器后来被更多人使用,但实际上有人仍在使用 SSH-1 协议的可能性有多大?
我有 3 台机器,它们连接成一条链,A、B、C。
A-->B-->C
Run Code Online (Sandbox Code Playgroud)
A 是我的机器,B 是服务器,C 是其他机器,上面有一些服务和 Web 服务器。由于一些问题,我需要从A访问C上的Web服务器(端口80),我可以使用ssh从A登录到B,然后从B登录到C,但此时控制台太少了。我需要网络浏览器,并且使用带选项的 ssh-X不起作用(Firefox 启动时 dbus 出现一些问题)。
我使用经典命令在 B 上进行端口转发,为 ssh 转发 22 端口:
ssh -L 2222:localhostB:22 user@ipC
Run Code Online (Sandbox Code Playgroud)
但使用相同的方法转发端口 80 不起作用:
ssh -L 8888:localhostB:80 user@ipC
Run Code Online (Sandbox Code Playgroud)
我知道还有其他一些转发可以使其工作,但我不明白如何以及什么。
我需要这样的东西:
A --> B (frd from B:8888 to C:80) --> C (port 80 web server)
Run Code Online (Sandbox Code Playgroud)
因此,当我输入 ipB:8888 时,我将被转发到 C:80。
任何解释必须做什么的帮助或带有命令的脚本将不胜感激。我从一篇博客中注意到必须完成两次ssh -L转发,但我不明白为什么。
ProxyJump在不需要时使用有什么缺点吗?
我们在许多机器之间使用共享的 .ssh/config 文件,其中一些在 jumpbox 后面,而另一些则没有。对于位于特定跳箱后面的两台机器,仍然使用该ProxyJump选项是否有不利之处?(我猜会有难以察觉的额外延迟,但就是这样)。
现在我们的共享配置使用此设置仅ProxyJump在需要时使用:
Match Host example Exec "! nslookup $(nslookup internal.site.com | head -1 | grep -o '[0-9]\+\([.][0-9]\+\)\{3\}') | grep -o 'name = .\+site.com\.$'"
ProxyJump jumpbox
Host example
HostName example.internal.site.com
Run Code Online (Sandbox Code Playgroud)
但是,Match Exec检查有点脆弱,不一定在所有系统上都能正常工作。
ssh ×10
bash ×1
debian ×1
git ×1
hostname ×1
kerberos ×1
legacy ×1
localization ×1
pam ×1
proxy ×1
public-key ×1
putty ×1
rsync ×1
ssh-keys ×1
ssh-tunnel ×1