标签: ssh

在调用 ssh 之前将主机名扩展为 fqdn?

我使用 .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 或其他方法之前扩展短名称?

domain-name-system ssh

5
推荐指数
2
解决办法
2514
查看次数

多用户、多服务器、SSH 密钥管理

这是情况。

我有 5000 台服务器分成 100
个“组” 。每个“组”有 1 个 SSH 密钥对,这将允许访问组中的任何服务器。我有 60 个用户(有些是人,有些不是)需要访问所有 5000 台服务器。用户都在不同的计算机上,一些 PC(腻子)一些 Linux(ssh)。

手动:将新服务器添加到“组”似乎很简单。添加/更新用户将是一场噩梦。添加/更新新组将是一场噩梦。将组密钥同步到用户工作站将是一场噩梦。

ssh-agent/pageant 适用于单个用户,在单个工作站上,但似乎不可扩展。

有没有可以处理这种管理的软件?也许是某种代理?还是基于自动服务器的密钥检索协议?

编辑

我感谢到目前为止的帮助,但是我认为我不清楚或不理解这些建议。

更多信息:每台服务器都是远程系统,无法访问 Internet,连接速度通常很慢。每个服务器在其authorized_keys 文件中只有一个条目。我不想要或不需要单独的用户密钥。我只是希望许多不同的人为每个组使用相同的密钥。现在我们正在使用密码验证,并在一张纸上保留每个组的密码列表。这适用于我们的团队。但是如果我们切换到基于密钥的身份验证,它将不起作用。

这些建议还有意义吗?如果是这样,您能否更具体地说明实施细节。

ssh

5
推荐指数
1
解决办法
1万
查看次数

SSH & SFTP:我应该为每个用户分配一个端口以方便带宽监控吗?

没有简单的方法可以实时跟踪 SSH 和 SFTP 的每个用户带宽使用情况。我认为为每个用户分配一个端口可能会有所帮助,但我想知道我的方法是否可行。

用例

  • Bob 的 UID 为 1001,应连接到端口 31001。
  • Alice 的 UID 为 1002,应连接到端口 31002。
  • 使用 UID 1003 的 John 应连接到端口 31003。

(我不想启动问题 247291 中提出的几个 sshd 实例。)

1. SFTP 设置:

在/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)

2. SSH 的额外设置:

中的几行/etc/profile防止用户连接到错误的端口:

if [ -n "$SSH_CONNECTION" …
Run Code Online (Sandbox Code Playgroud)

ssh port sftp bandwidth-measuring

5
推荐指数
1
解决办法
493
查看次数

如何更改特定 IP 地址的 ssh 端口?

我在使用腻子时遇到了麻烦,所以我更喜欢使用 shell (linux) 通过 ssh 访问服务器,我的 ip 地址更改了 ssh 的端口是 6091,所以无论如何都可以通过命令通过 ssh 访问服务器

ssh root@myipaddress
Run Code Online (Sandbox Code Playgroud)

因为我有很多服务器的默认 ssh 端口是 22,所以我只想将端口更改为特定的 ip 地址。

ssh ip putty dedicated-server

5
推荐指数
2
解决办法
3万
查看次数

使用转发的密钥从远程 ssh 服务器进行 rsync

语境

我正在编写一个同步脚本来同步一些网络环境。

例如:从生产更新集成(主要是为了获取新的数据库行和上传的文件)

我的一些先决条件是:

  • 开发人员将从集成服务器使用此脚本
  • 需要 DSA 密钥才能连接到生产服务器
  • 集成服务器无法存储开发者的私钥

题

我希望开发人员连接到集成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

但没有运气。

ssh rsync ssh-agent

5
推荐指数
1
解决办法
3612
查看次数

如何在 AIX 上配置通过 SSH 的 X11 转发?

这是我尝试过的。

我在远程 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不会显示任何信息。

linux unix ssh aix x11

5
推荐指数
1
解决办法
3万
查看次数

如何防止脚本吞下所有标准输入?

我有一个脚本,它从循环中的管道读取并在循环中运行一个期望脚本和一个普通的 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 中读取。

ssh shell stdin expect

5
推荐指数
1
解决办法
2754
查看次数

向 Brocade 交换机发送交互式分区命令

我有一台 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 交换机上运行脚本。

unix ssh storage-area-network brocade

5
推荐指数
1
解决办法
1628
查看次数

IPTables:允许传出 SSH

我试图编写我的规则,以仅使用 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 iptables

5
推荐指数
3
解决办法
2万
查看次数

我应该将 SSH 端口更改为 &lt; 1024 吗?

许多服务器配置指南建议将 SSH 端口更改为大于 1024 的值,以保持模糊和避免冲突。

这很有趣,因为它建议使用小于 1024 的端口,因为它具有特权:

http://www.thefanclub.co.za/how-to/how-secure-ubuntu-1204-lts-server-part-1-basics

对这种做法有什么想法吗?

security linux ssh

5
推荐指数
2
解决办法
1万
查看次数