我使用 .ssh/config 文件根据子域的给定部分适当地设置我的用户名,例如
Host *widgetshop.com*
User foobar
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Host *
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h:%p
Run Code Online (Sandbox Code Playgroud)
如果我写:
ssh foo.widgetshop.com
Run Code Online (Sandbox Code Playgroud)
但如果我要写则行不通:
ssh foo
Run Code Online (Sandbox Code Playgroud)
这在搜索路径解析时变为相同的 fqdn。
任何人都可以在调用 ssh 或其他方法之前扩展短名称?
这是情况。
我有 5000 台服务器分成 100
个“组” 。每个“组”有 1 个 SSH 密钥对,这将允许访问组中的任何服务器。我有 60 个用户(有些是人,有些不是)需要访问所有 5000 台服务器。用户都在不同的计算机上,一些 PC(腻子)一些 Linux(ssh)。
手动:将新服务器添加到“组”似乎很简单。添加/更新用户将是一场噩梦。添加/更新新组将是一场噩梦。将组密钥同步到用户工作站将是一场噩梦。
ssh-agent/pageant 适用于单个用户,在单个工作站上,但似乎不可扩展。
有没有可以处理这种管理的软件?也许是某种代理?还是基于自动服务器的密钥检索协议?
编辑
我感谢到目前为止的帮助,但是我认为我不清楚或不理解这些建议。
更多信息:每台服务器都是远程系统,无法访问 Internet,连接速度通常很慢。每个服务器在其authorized_keys 文件中只有一个条目。我不想要或不需要单独的用户密钥。我只是希望许多不同的人为每个组使用相同的密钥。现在我们正在使用密码验证,并在一张纸上保留每个组的密码列表。这适用于我们的团队。但是如果我们切换到基于密钥的身份验证,它将不起作用。
这些建议还有意义吗?如果是这样,您能否更具体地说明实施细节。
没有简单的方法可以实时跟踪 SSH 和 SFTP 的每个用户带宽使用情况。我认为为每个用户分配一个端口可能会有所帮助,但我想知道我的方法是否可行。
(我不想启动问题 247291 中提出的几个 sshd 实例。)
在/etc/ssh/sshd_config:
Port 31001
Port 31002
Port 31003
Subsystem sftp /usr/bin/sftp-wrapper.sh
Run Code Online (Sandbox Code Playgroud)
sftp-wrapper.sh仅当端口正确时,该文件才会启动 sftp 服务器:
#!/bin/sh
mandatory_port=3`id -u`
current_port=`echo $SSH_CONNECTION | awk '{print $4}'`
if [ $mandatory_port -eq $current_port ]
then
exec /usr/lib/openssh/sftp-server
fi
Run Code Online (Sandbox Code Playgroud)
中的几行/etc/profile防止用户连接到错误的端口:
if [ -n "$SSH_CONNECTION" …Run Code Online (Sandbox Code Playgroud) 我在使用腻子时遇到了麻烦,所以我更喜欢使用 shell (linux) 通过 ssh 访问服务器,我的 ip 地址更改了 ssh 的端口是 6091,所以无论如何都可以通过命令通过 ssh 访问服务器
ssh root@myipaddress
Run Code Online (Sandbox Code Playgroud)
因为我有很多服务器的默认 ssh 端口是 22,所以我只想将端口更改为特定的 ip 地址。
我正在编写一个同步脚本来同步一些网络环境。
例如:从生产更新集成(主要是为了获取新的数据库行和上传的文件)
我的一些先决条件是:
我希望开发人员连接到集成ssh -A以允许脚本使用他们的密钥连接到生产服务器:
+-------------+ SSH +-------------+ rsync +-------------+
| Developer | ---------> | Integration | --------> | Production |
| computer | | Platform | <-------- | platform |
+-------------+ +-------------+ +-------------+
(priv DSA key) (pub DSA key) (pub DSA key)
Run Code Online (Sandbox Code Playgroud)
它适用于sshor scp,但我无法让 rsync 使用转发的密钥连接到生产服务器。
我看到了类似的问题,但是 rsync 是从用户的计算机运行的,因此 ssh 密钥文件可能会被-i选项指向。
我担心的不是密码短语,因为此脚本将由真实用户(不是 cron)运行
我试图像这样将远程 shell 指定为 rsync:
rsync -e "ssh -A" user@production
但没有运气。
这是我尝试过的。
我在远程 AIX 系统上编辑了 /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
Run Code Online (Sandbox Code Playgroud)
以及设置 $DISPLAY
DISPLAY=localhost:10.0
export DISPLAY
Run Code Online (Sandbox Code Playgroud)
...重启
通过 RHEL 连接
ssh -X me@hostname
Run Code Online (Sandbox Code Playgroud)
运行 xclock
xclock
Run Code Online (Sandbox Code Playgroud)
得到以下输出:
X11 connection rejected because of wrong authentication.
X connection to localhost:10.0 broken (explicit kill or server shutdown)
Run Code Online (Sandbox Code Playgroud)
也xauth list不会显示任何信息。
我有一个脚本,它从循环中的管道读取并在循环中运行一个期望脚本和一个普通的 shell 脚本。这两个脚本都运行 ssh 到另一台服务器以获取一段数据。例如:
cat /tmp/file |
while read a b c d
do
s=`expect-script server1 $b`
c=`ssh $b normal-script`
echo $s $c
done
Run Code Online (Sandbox Code Playgroud)
即使 /tmp/file 中有很多行,脚本也会在处理第一行后退出。我怀疑预期脚本正在吞噬所有标准输入,因此当它返回时,没有任何东西可以阅读。我怎样才能避免这种情况?我不希望我调用的任何脚本从主脚本的 stdin 中读取。
我有一台 Brocade FC 交换机,我想对其进行一些分区。我有一个包含太多行的构建文件,无法复制粘贴到正常的交互式会话中,并且我在交换机和我的 unix 管理服务器之间使用预共享密钥设置了 ssh。我没有期望并且更愿意坚持直接使用 ssh 和 bash。
我试过单独发送命令,但是它失败了,因为每个 ssh 命令都是一个单独的会话,并且一旦会话被删除,所有未提交的命令就会被刷新。
我试过这个:
cat testbuildfile | ssh -tt user@switch
Run Code Online (Sandbox Code Playgroud)
它几乎可以工作,因为它运行我的构建文件中的所有命令,但是它让我在 Brocade 上有一个会话,当它们完成时我无法使用。我有 Brocade 命令提示符,但是如果我输入任何内容,它就会挂起,我必须按 ctrl-c 才能返回到我的 unix 服务器。
我知道我可以将提交命令放入我的构建文件中,但我宁愿有机会在提交之前检查和验证工作。理想情况下,我希望它运行我的命令文件,然后让我登录到它启动的会话中以供我检查,然后手动提交命令。我可以这样做吗?
编辑:如果没有会导致保修失效的提升外壳,则无法在 Brocade 交换机上运行脚本。
我试图编写我的规则,以仅使用 http/https、apt-get 更新、发送邮件 SSH 访问来保护 Web 服务器。到目前为止,我已经做到了:
IPT=/sbin/iptables
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
#
$IPT -A INPUT -m state --STATE ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --STATE ESTABLISHED,RELATED -j ACCEPT
#
# Allow All for SSH
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -o …Run Code Online (Sandbox Code Playgroud) 许多服务器配置指南建议将 SSH 端口更改为大于 1024 的值,以保持模糊和避免冲突。
这很有趣,因为它建议使用小于 1024 的端口,因为它具有特权:
http://www.thefanclub.co.za/how-to/how-secure-ubuntu-1204-lts-server-part-1-basics
对这种做法有什么想法吗?