我需要进入在虚拟机上远程运行的 redhat box 的恢复模式。
我使用的是 RedHat 5 64 位企业版。
我使用 SSH 登录到该框。我可以使用 restart 命令重新启动,但我需要知道我是否能够通过 SSH 连接到它,因为我是远程使用它并且无法通过 UI 登录。
真正的问题是,我chown -R $USER /在根目录上做了一个。
我正在尝试将此作为试验,但没有意识到后果,以使某些事情起作用,即使使用 sudo 也不知何故不起作用。
我中途杀了它。但是,由于这种愚蠢,我不能使用 sudo。
我已经读到我可以在救援模式下做一些事情,但我不明白如何远程进入救援模式。我无法重新安装 linux,这不是一个可能的选择。
无论如何我可以找回我的 sudo 权限吗?
这样做目前不起作用:
chown root:root /usr/bin/sudo
chown: changing ownership of `/usr/bin/sudo': Operation not permitted
sudo chown root:root /usr/bin/sudo
sudo: must be setuid root
Run Code Online (Sandbox Code Playgroud) 昨天连接到 AWS 服务器工作正常,但今天我尝试使用命令提示符进行连接,如下所示:
ssh -i <mypemfile.pem> ubuntu@<my-ip-address>
Run Code Online (Sandbox Code Playgroud)
我有错误:
连接被 IP 地址关闭
我还更改了安全组中的入站规则。
我尝试连接 filezilla、putty、winscp,但没有成功。请帮我找出问题所在。
我是从谷歌做的
ssh -v -i <mypemfile.pem> ubuntu@<my-ip-address>
Run Code Online (Sandbox Code Playgroud)
它将显示以下内容
OpenSSH_6.6.1, OpenSSL 1.0.1m 19 Mar 2015
debug1: Connecting to 52.88.36.194 [52.88.36.194] port 22.
debug1: Connection established.
debug1: identity file instacare.pem type -1
debug1: identity file instacare.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubu
ntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000 …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个包含 openssh 服务器的映像,并在调用运行命令时启动它。我采取了以下步骤:
docker pull ubuntu
docker run -d -it ubuntu bash
apt-get update
apt-get install openssh-server -y
exit
docker ps -a
docker commit <CONTAINER ID> myimg
// tried the following three, same results
docker run -d myimg "/usr/sbin/sshd"
docker run -d myimg /usr/sbin/sshd -D
docker run -d myimg service ssh start
Run Code Online (Sandbox Code Playgroud)
这运行图像然后立即退出,我试图让服务跟上。我究竟做错了什么?
我正在尝试通过网关连接到 EC2 实例。
如果我连接到网关
local> ssh gateway
Run Code Online (Sandbox Code Playgroud)
然后我可以在没有密码的情况下连接到 EC2
gateway> ssh ec2 # works
Run Code Online (Sandbox Code Playgroud)
但是,尝试通过代理连接似乎需要身份文件。
Host gateway
HostName <gateway>
Host ec2
HostName ec2-<ec2>.compute.amazonaws.com
ProxyCommand ssh gateway -W %h:%p
local> ssh ec2
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
我认为 ProxyCommand 基本上是将我登录到网关,然后登录到最终目的地。如果是这样,当网关设置为不需要公钥时,为什么它会要求我提供公钥?如何以与 ssh 进入网关然后 ssh 进入 ec2 相同的方式连接到 ec2 实例?
编辑:rsync 正常工作(不要求提供密钥文件)
rsync -pthrvz --rsync-path=/usr/bin/rsync --rsh='ssh gateway ssh' . ec2:/path
Run Code Online (Sandbox Code Playgroud)
ssh -v 输出 gateway> ssh ec2
gateway> ssh -v ec2
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for …Run Code Online (Sandbox Code Playgroud) 我们有几十台 Linux 服务器,还有几个开发人员,每个开发人员都涵盖了服务器的一部分。
目前每台服务器都有一个管理员账号,如果有人想管理那个服务器,他的公钥会被添加到服务器管理员账号的sshauthorized_keys中,这样他就可以访问和编辑这个服务器了。但不是一个好的解决方案:
所以我认为应该有更好的解决方案:
如果有人知道这样的解决方案吗?谢谢。
我一直在尝试从终端使用我的私钥文件连接到远程服务器,但它似乎不起作用。我不明白为什么。这是我如何做到的:
$ ssh -i private.ppk oap@10.20.0.11
Enter passphrase for key 'private.ppk':
Enter passphrase for key 'private.ppk':
Enter passphrase for key 'private.ppk':
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)
我的私钥文件有 600 模式。我可以在我的 Linux 机器上使用PuTTY来连接这个私钥文件。可能是什么问题?
刚开始使用 Ansible,我在客户端机器上设置了一个 Asible 用户,并从 OpenSSL 创建了一组密钥。我在自己的帐户下运行 Ansible。我已经在 Ansible 配置中指定了用户和私钥文件。我希望远程命令以该用户身份运行,并且该用户 sudo 执行需要提升的命令。
/etc/ansible/ansible.cfg
private_key_file = /etc/ansible/pka/confman.crt
remote_user = confman
Run Code Online (Sandbox Code Playgroud)
诸如此类的命令在初始输入密码后不要求输入密码:
ansible all -m ping
Run Code Online (Sandbox Code Playgroud)
每次运行它们时都会提示输入密码:
ansible all -m ping -b
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
ansible all -m ping --sudo
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
ansible all -a "cat /etc/redhat-release"
Enter passphrase for key '/etc/ansible/private_keys/confman.crt':
(success)
Run Code Online (Sandbox Code Playgroud)
为什么?
有没有办法设置密码?有没有更安全的方法?我计划通过 cron 和其他自动化工具远程运行 ansible,在这些工具中不能输入密码。
作为上下文,我从来不需要在 Linux 服务器之间使用 SSH,总是在 Windows 机器上使用 putty、RoyalTS 和 mRemoteNG 等工具,所以我的 ssh 知识......很少。我想我错过了一些明显的东西。
我正在尝试在我的设备上配置 iptables,以便仅允许SSH和HTTPS流量。特别是,HTTPS 协议用于从 Java 客户端向远程服务器调用某些REST API 。
这是我的 iptables:
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#HTTPS
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A INPUT -p tcp …Run Code Online (Sandbox Code Playgroud) 在*nix系统上,当配置ssh以侦听非标准端口时,我是否也应该编辑/etc/services以反映这一点。
我认为应该这样做,因此使用它的工具(例如ufw)将识别 ssh 的正确端口,但我在文档和教程中很少看到它的提及。
那么编辑 是好的还是坏的做法/etc/services,如果不是,为什么?
我正在尝试翻译 SSH 命令:
ssh -N -L 1521:server1.com:1521 username@server2.com
Run Code Online (Sandbox Code Playgroud)
进入腻子。
-N: 不要执行远程命令。这对于仅转发端口很有用(仅限协议版本 2)。-L [bind_address:]port:host:hostport:指定本地(客户端)主机上的给定端口要转发到远程端的给定主机和端口。该命令首先通过 SSHuser_name@server2.com连接到 ,然后再连接到server11521 端口(NAT 后的服务器)。
以更抽象的方式,该命令可以写为:
ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER
Run Code Online (Sandbox Code Playgroud)
我尝试编写以下 PuTTY 命令:
putty -N -D 1521 -P 1521 server2.com username@server1.com
Run Code Online (Sandbox Code Playgroud)
和:
-N: 禁止启动 shell 或命令。-D: 在本地端口上设置基于 SOCKS 的动态端口转发。-P: 指定端口号根据PuTTY 手册。
但是我得到:
可能是什么问题?
我禁用了防火墙,并检查putty.exe允许与 Internet 通信。
使用 PuTTY GUI,隧道使用以下配置: