Questions tagged «ssh»

SSH(安全外壳)是用于在远程计算机上安全运行命令的协议。使用此标记可解决有关配置,使用SSH客户端和服务器软件以及对其进行故障排除的问题。

2
强制SSH在shell中(而不是在窗口中)询问我的私钥密码
引导后第一次使用SSH时,它会要求我提供私钥解锁密码(这是我期望的行为)。但这是在窗口而不是外壳中进行的(类似于gksudoVS sudo)。这令人沮丧(我必须使用鼠标单击窗口),其次有时会导致错误(我使用Guake终端,有时是全屏显示,在这种情况下,我无法专注于SSH窗口,因此我不得不重新启动X )。 所以,我的问题是:是否有一种方法可以强制SSH在命令行上要求我的私钥密码,而不是弹出一个窗口?

3
如何设置ssh不仅尝试端口22,而且每次尝试次端口?
为了减少日志中的噪音并稍微降低可发现性(并且在fail2ban之上,仅允许公共密钥身份验证等),我经常在设置为其他端口的服务器上更改sshd端口,例如5492。目前我将-p 5492附加到我的ssh命令中,或将每个特定服务器的端口添加到了我的中ssh_config。 如果端口22不起作用,是否可以配置ssh尝试同时连接到端口22和端口5492?

1
通过SSH唤醒局域网
多年来,我已经为许多Linux设备成功使用了Wake-on-LAN。它运作良好。 但是,我在家也有Mac Mini。我注意到它进入睡眠状态,并且具有两个与我在睡眠状态下拥有的Linux机器不同的属性: 它仍然响应网络上的ping。 它将在进入ssh连接时自动唤醒,而无需局域网唤醒。 第2个属性最终非常好:它在不使用时会自动进入睡眠状态并节省电量,并且在我要插入它时不需要任何额外的考虑即可开机。它只是自动唤醒。在我注销后,十五分钟后它将再次进入睡眠状态。 我的假设是因为Apple控制着硬件和软件堆栈。因此,虽然业界范围内的Wake-on-LAN是基于魔术包(不需要操作系统交互)的网络设备功能,但是Mac的魔术“ LAN唤醒并且仍然可以响应ping”是因为它们实际上并没有使整个操作系统进入睡眠状态和/或使单独的网络堆栈仍在睡眠模式下运行。但这只是一个猜测。 我很好奇,是否有人在Linux机器上看到或实现过这种“ Wake-on-incoming-SSH”?还是仅在通过硬件控制软件的Apple设备上才能找到这种特殊的魔力,而其他设备却无法以其他方式做到这一点?

1
谁在启动我的ssh-agent,为什么它不能正确终止?
这是我很长一段时间以来一直遇到的问题,但是每次我尝试弄清某些东西时,我都会迷路,所以我想最好在这里问一个也许更有经验的人可以帮助我。 背景 我的Raspberry Pi正在运行Raspbian Jessie,我经常使用SSH登录并远程执行命令。在我的第一个SSH会话中,我注意到每次登录时都会在RPi上ssh-agent生成一个进程,但是在注册时却没有杀死该进程exit:多次登录和注销会导致生成一堆ssh-agent进程,只是让它们挂在那儿什么也不做。最近,我在各处闲逛并阅读手册页和答案,我了解了的目的ssh-agent,并且我还了解到注销通常应该将其杀死,因此我开始自问为什么不这样做。此外,我注意到发行source ~/.bashrc会导致产生另一个实例ssh-agent。我在相关手册页上阅读之所以SSH_AGENT_PID应该定义环境变量,是因为应该在该ssh-agent程序中启动该程序eval以执行其输出并定义此类变量,然后这些变量将由其他与SSH相关的命令使用,包括ssh-agent -k(杀死相对于当前会话的代理),所以我跑了echo $SSH_AGENT_PID和echo $SSH_AUTH_SOCK,但他们都是空的。我突然意识到:可能该进程在注销时不会被终止,因为它ssh-agent -k试图从未设置的环境变量中读取其PID。 问题 由于ssh-agent未在注销时被杀死,并且这肯定是由于未设置所需的环境变量而发生的,因此只能表示一件事:调用ssh-agent登录的任何人都可能无法以正确的方式进行操作(应该如此eval "$(ssh-agent -s)")。所以我想:那是什么问题?我将发现执行了哪个配置文件,服务或登录脚本以启动代理并手动对其进行修复!到底在哪里? 我尝试过的 由于我注意到ssh-agent每次调用都会产生一个source ~/.bashrc,因此这是我检查的第一个文件,但是那里甚至没有远程引用与SSH相关的任何文件。我一直在以下所有文件中搜索使用vi的字符串ssh,但未发现任何内容: ~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile /etc/profile.d/ (every file in this folder) /etc/environment 还有其他文件可以参与source ~/.bashrc吗?我真的不知道 然后,我搜索了相关systemd服务,但仅找到ssh.service,即WantedBy=multi-user.target,因此未在登录时运行(而且很明显,因为这是SSH服务器守护程序)。 我还尝试将文件/home/pi夹中的每个文件都移到一个临时文件夹,然后注销并再次登录,但ssh-agent仍然生成。 最终,我还打开了我在会议厅中拍摄的最后一张照片:我find / -name 'ssh-agent'以root身份运行,仅打印/usr/bin/ssh-agent了一个可执行文件,因此我创建了一个伪造的可执行文件,该可执行文件基本上只记录了父命令: #! /bin/bash ps -o args= $PPID > /home/pi/LOG cat /proc/$PPID/cmdline >> /home/pi/LOG 我重命名了真实的,/usr/bin/ssh-agent并用设置了正确权限/用户/组的伪造替换了它,source ~/.bashrc再次运行,然后打印了LOG文件: …

6
(bash)脚本A,等待脚本B,但不等待其子进程
所以我有scriptA可以做到: ssh server1 -- scriptB & ssh server2 -- scriptB & ssh server3 -- scriptB & wait otherstuffhappens ScriptB可以: rsync -av /important/stuff/. remoteserver:/remote/dir/. rsync -av /not/so/important/stuff/. remoteserver:/remote/dir/. & exit 我期望的结果是scriptA在继续进行之前将等待scriptB的所有实例完成,这是它当前正在执行的操作,但是它也在等待不太重要的东西的后台rsync。这些是我不想等待的较大文件。 我已经阅读了nohup,disown和&之间的区别,并尝试了不同的组合,但是我没有得到想要的结果。 在这一点上,我很沮丧。任何帮助,将不胜感激!

1
如何仅使用SSH创建/设置VPN?
这是我要解决的问题。有一个服务器(“远程系统”),我可以从本地计算机将其插入,但该远程系统没有Internet连接。我想使用基于ssh的VPN通过我的本地计算机为远程系统提供访问Internet的权限。我该如何完成?我尝试了以下方法,这似乎部分起作用。我的意思是“部分工作”是将连接数据包(同步数据包)发送到本地计算机,但无法建立与Internet的连接。我正在使用tcpdump捕获本地计算机上的数据包。本地计算机和远程系统都在运行centos 7。 设置 -注意:以下命令按顺序运行。user @ remote命令在远程服务器上运行,而user @ local命令在本地计算机上运行。 [user @ remote〜] $ ip地址显示 1:lo:mtu 65536 qdisc队列状态未知 链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8范围主机lo 永久有效_lft永久首选_lft inet6 :: 1/128作用域主机 永久有效_lft永久首选_lft 2:eth0:mtu 1500 qdisc pfifo_fast状态UP qlen 1000 链接/以太AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255作用域全局动态eth0 valid_lft 1785sec preferred_lft 1785sec inet6 EEEE:FFFF:GGGG:HHHH:IIII:JJJJ:KKKK:LLLL / 64范围全局noprefixroute动态 valid_lft …
9 centos  ssh  vpn  route 

1
如何基于ssh主机名自动更改终端背景?
如何根据ssh所使用的主机名来编程地更改终端窗口的背景颜色? 例如,当我投入生产硬件中的实时嵌入式系统时,我希望终端背景变为红色-以“保持对我所使用服务器的了解”。仅在PS1中拥有主机名并不总是足够的。 我正在使用gnome-terminal,但是可以接受Linux下任何可行的解决方案。

6
在启动时进行自动反向SSH连接
我有一台位于NAT后面的PC,该PC与我的Digitalocean VPC建立了反向SSH连接。我在家中利用这种反向的SSH连接登录到我的办公室PC(我被授权这样做)并复制文件并做其他重要的事情。 尽管不是很经常,但我注意到我的办公室PC重新启动(由于电源故障等),并断开了与VPC建立的反向SSH连接。在这种情况下,我无法从家用PC连接到办公室PC。 我运行以下脚本来建立反向连接+动态代理,以匿名化在办公室PC上生成的流量(因为我不需要共享浏览信息)。 autossh -CD 8080 -i digitalOcean -R 8081:localhost:22 root@IPofDigitalOceanPC 重新启动后,由于我不在物理上,因此无法在办公室PC上再次运行该脚本。为了解决此问题,我安装了以下crontab。 注意:rev.sh文件包含以上行。证书“ digitalOcean”和rev.sh位于Ubuntu home。因此,当我./rev.sh在Ubuntu终端中执行时,我将获得一个动态代理,并且还可以访问ym DigitalOcean服务器。此方法有效100%。 但是,当我通过以下方法安装chrontab时,我的ubuntu PC永远不会创建动态代理。我可以看到这是因为,当我从Google Chrome浏览器检查此代理时,它表示代理正在拒绝连接。 这是我尝试过的cronejobs根cronejobs。我也以普通用户的身份尝试了这些,但仍然无法正常工作。 @reboot bash /home/user/rev.sh @reboot /home/user/rev.sh @reboot cd /home/user && ./rev.sh 然后,我在当前时间之前的几分钟安装了一个chrontab,并等待其执行。 24 12 8 * * * bash /home/user/rev.sh 24 12 8 * * * /home/user/rev.sh 这些也没有执行。 请足够友好地帮助我发现我的错误。关于我的问题,这个网站上有很多类似的问题。因此,我提到了许多答案,但是似乎没有一个有用的答案。

3
SFTP不以哪种方式基于SSH?
我刚刚完成了18级的OverTheWire Bandit战争游戏。 那真是令人惊讶。这是此级别的说明。 下一级别的密码存储在主目录中的文件自述文件中。不幸的是,有人修改了.bashrc以使您在使用SSH登录时注销。 我在想让外壳跳过源代码的方法.bashrc。但是在找到解决方案之前,我很想简单地开始与服务器建立SFTP连接。我没想到它会起作用。但是确实如此。我想知道为什么。我以为SFTP通过SSH运行。 为了清楚起见,当我SSH进入服务器时,被踢出了预期的结果。
9 ssh  sftp 

4
如果禁用selinux会发生什么问题[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我们从另一个团队那里继承了一堆二手服务器。其中有些启用了SELinux,有些则没有。由于SELinux的,我们是无法设置密码的ssh,我们的网络服务器等,我们发现一个变通此stackexchange网站,这是运行: restorecon -R -v ~/.ssh 但是,由于我们不需要运行SELinux来完成工作,因此将其关闭可能比记住每个人都需要权限的目录运行上述cmd容易。 我们是否可以关闭SELinux而不产生任何影响,还是重新映像服务器更好?需要注意的一件事;我们的IT团队真的很忙,因此除非是绝对必要(需要非常好的业务案例),否则重新映像服务器的位置并不高...或者有人用一瓶苏格兰威士忌或威士忌贿赂老板。 更新:感谢大家的建议。这些服务器都将用作内部开发服务器。这些机器将不会有外部访问,因此安全性不是我们关注的重点。据我们所知,我们目前使用的所有服务器均未启用SELinux。我的经理刚刚获得的一些服务正在执行,而那些我们正在禁用的服务正在执行,因此集群中的所有内容都是统一的。
9 linux  ssh  selinux 

2
mosh-server需要UTF-8本机语言环境才能运行
我正在尝试从我的Gentoo连接到RHEL服务器。两者都已mosh安装,但是出现此错误: petanb@localhost ~/Documents $ mosh root@server mosh-server needs a UTF-8 native locale to run. Unfortunately, the local environment ([no charset variables]) specifies the character set "US-ASCII", The client-supplied environment ([no charset variables]) specifies the character set "US-ASCII". LANG= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" …
9 ssh  gentoo  mosh 

1
ssh转发多个端口
所以这对我有用: ssh -v -L 8080:remotewebserver:8080 me@jumphost 如果我还要增加端口怎么办? 我不仅要转发8080,还要转发8443、8923和8181? 我需要为每个端口进行新连接吗?
9 ssh 

1
对单个服务器启用大规模并发SSH
我的目标是允许在单个服务器上运行10000个并发ssh。 为简单起见,我将ssh-sing到localhost: for i in `seq 1 10000`; do ssh localhost "echo ${i}; sleep 100" >>./info 2>>./log & done sleep 100是为了确保第10000个ssh启动时,第一个ssh仍处于连接状态,因此确实存在10000个并发 ssh。 这是我收到的两种错误消息: 1. ssh_exchange_identification: Connection closed by remote host 2. ssh_exchange_identification: read: Connection reset by peer 我做了以下修改: 在/etc/security/limits.conf和中/etc/security/limits.d/90-nproc.conf,将soft&hard nofile和设置nproc为65535(这是可能的最大值吗?-更新:否。最大值是1048576) 在中/etc/sysctl.conf,设置kernel.pty.max = 65535 在/etc/ssh/sshd_config,设置MaxStartups 10000。 这些修改使我可以在单个服务器上成功运行1000个并发ssh,但是它们不适用于2000及更高版本的ssh。 有人建议更改的值MaxSessions(实际上我不清楚它的用法:多路复用如何影响我的情况?)/proc/sys/net/core/netdev_max_backlog和/proc/sys/net/core/somaxconn,但它们似乎没有什么区别。 此外,如果它们是到不同服务器的10000个并发ssh,则没有错误(仅当ssh到单个服务器时才出现问题): for i …
9 ssh  sshd  ulimit 

1
ssh-agent缺少类似于sudo的不活动/空闲超时功能是否有技术原因?
ssh-agent -t在[1]上对现有功能进行了简短的讨论,早在2001年就有一篇关于debian-devel [2]的帖子,希望提供不活动超时功能。SE [3]上针对选美也有类似的讨论。 我想知道地球上的其他地方如何保护ssh密钥-我是否错过了一些明显的东西,而这对于我来说却是一个痛苦点,而且显然没有其他人吗?具体来说,我在考虑脚本化的ssh交互,例如与ansible的交互。今天看来,您的选择是: 例如,将代理中密钥的有效期设置为令人担忧的长时间。1h或您的脚本的最大运行时间可能是(我怀疑很多人都允许他们的sudo re-auth超时延长这么长的时间!)-但是seahorse/ gnome-keyring-daemon几乎不支持这么多[4] 长时间运行脚本,并每5/10/15分钟重新输入一次密码:现在您可以轻松地看到每天输入20次密码 破解您自己的自制解决方案以模仿此缺少的功能,也许与您的Shell的TMOUTShell var 结合使用(感谢freenode #openssh IRC上的人员的建议) 根本没有设置密钥生存期,即您的代理会永久加载您的密钥,或者直到您杀死/重新启动它为止 如果您对身份验证所使用的每种角色使用简短的ssh代理超时,强密码短语和不同的密钥文件,那么这一天会非常令人沮丧! 我已经尝试了gpgkey2ssh和智能卡,但这并不能真正解决这个特定问题:我仍然想要ssh-agent功能,并且我不想每隔5分钟重新进行身份验证只是为了防止我的私钥暴露我的计算机空闲时在内存中存储。 我做错了吗? [1] 配置SSH代理的默认超时 [2] https://lists.debian.org/debian-devel/2001/09/msg00851.html [3] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity [4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231

1
使用公钥和PAM的SSH中的2因素身份验证
我正在尝试设置2因素身份验证。如果出现以下情况,我希望用户成功登录: 公钥/私钥匹配(认证方式:publickey)或密码正确 我的pam身份验证方法成功。 第二种身份验证方法是PAM文件。因此,我将其放入/usr/lib/pam/并添加auth required my_pam_module.so到中/etc/pam.d/sshd。 到目前为止,我可以使用(publickey方法)或(密码和我的pam模块所需的任何东西)登录。因此,我添加AuthenticationMethods publickey,keyboard-interactive了内容/etc/sshd_config,现在我需要拥有公共密钥,密码和“我的pam模块需要什么”。 为了达到上述目的,我需要更改哪些行?我正在使用Mac OS X Mavericks(10.9)。如果您不熟悉Mac,它也可以帮助您在Linux系统上进行操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.