我有一份新贵的工作/etc/init/tunnel.conf:
description "SSH Tunnel"
start on (net-device-up IFACE=eth0)
stop on runlevel[016]
respawn
exec autossh -nNT -o ServerAliveInterval=15 -R 12345:localhost:22 myuser@myserver
Run Code Online (Sandbox Code Playgroud)
当我查看/var/log/upstart/tunnel.log:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
Run Code Online (Sandbox Code Playgroud)
但如果我从终端尝试
autossh -R 12345:localhost:22 myuser@myserver
Run Code Online (Sandbox Code Playgroud)
它连接到我的服务器而不要求我输入密码(我已经复制了 SSH 密钥)
当我使用sudo:
sudo autossh -R 12345:localhost:22 myuser@myserver
Run Code Online (Sandbox Code Playgroud)
它要求我提供 myserver 密码,所以我想这就是我在新贵工作中遇到的问题。为什么 SSH 要求我输入密码,我们以 root 身份运行它?
我认为阻止访问 SSH 端口以仅允许我的国家/地区访问是一个明显的步骤,但我看不到一种实用的方法来做到这一点。
如果重要的话,我在英国。我可以完全访问 Ubuntu 服务器。服务器是远程基于云的服务器。
这似乎太简单了,我看不出它是如何工作的:http : //eminasif.wordpress.com/2014/01/14/how-to-restrict-server-ssh-access-or-any-port-only -for-specific-country-in-csf/
这显示了大量 IP,但我看不到如何将其转移到任何可用/实用的地方:http : //www.nirsoft.net/countryip/gb.html
事实上,只有一个办公室的人需要访问(没有人是远程的)。我不愿意设置我们在连接时使用的当前 IP 地址,因为它似乎每 6 个月更改一次。
我确实有其他良好的安全实践 - 禁用 root 登录、高位加密密钥等,但这似乎是一个明显的额外步骤。
这值得麻烦吗?有没有可靠的方法来做到这一点?
我在 SSH 会话期间仍然登录到远程服务器的同时关闭了终端(exit在关闭终端之前我没有这样做)。
这会损坏服务器吗?可能有什么后果?
有没有办法自动为近 30 个用户的大量(近 9000 个)服务器创建 SSH 密钥
我需要通过 ssh 密钥建立安全连接,先决条件是:
在我的 Linux 上,我无法创建这种密钥,该男子说:
DSA 密钥必须正好是 FIPS 186-2 指定的 1024 位
但是我发现在 Putty 中,我们可以创建 DSA 2048 位密钥。因此,我尝试将 Putty 生成的一对密钥放在用户的 .ssh 目录中。那行不通...
私钥看起来像这样:
PuTTY-User-Key-File-2: ssh-dss
Encryption: aes256-cbc
Comment: dsa-key-20150127
Public-Lines: 17
xxxxxxxxxxxxx
Private-Lines: 1
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private-MAC: xxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我认为身份验证无法使用此密钥。
我的问题是:
感谢您的帮助,并为我的英语不好而感到抱歉
问题:
我正在尝试为多个服务器禁用 SSH 密码身份验证。这意味着我必须修改 sshd_config 文件。从
#PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)
到
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
我真的不想一件一件的去做。有什么方法可以使用单个命令在多个服务器上分发/修改配置文件?
您可以做出的假设:
其他注意事项:
我将配置文件设置为在每个服务器上侦听不同的地址和/或端口。
所以这不能通过从中央服务器下载更新的配置文件来完成。
我更喜欢使用文本替换命令来完成这项工作
当我通过 ssh 连接到我的 Linux 服务器并像这样使用 grep 时:
grep '超时超时' 日志文件 | 较少的
自动换行不起作用。
但是,如果我使用相同的命令但先使用 less,如下所示:
更少的日志文件| grep '超时'
线条环绕。我不确定是什么问题,或者这是否正常。但无论我使用什么 ssh 客户端,它都会发生。我已经尝试过 putty 和 Ubuntu 客户端。我怎样才能解决这个问题?
与通过电子邮件交换 ftp/sftp 凭据相比,通过电子邮件交换系统 ssh 密钥更安全吗?如果一个人没有物理 ssh 私有文件,黑客是否能够通过知道公共 ssh-key 字符串来访问服务器?
我正在尝试从我的机器 ssh 到另一台机器,然后从那里到第三台机器。当我手动执行时,它的工作方式如下:
localhost$ scp ~/.ssh/id_rsa myuser@myhost.something.something.com:.
localhost$ ssh myuser@myhost.something.something.com
myhost.something.something.com$ ssh -i id_rsa myuser@10.25.100.42
10.25.100.42$
Run Code Online (Sandbox Code Playgroud)
但我想直接做,一步。我希望我的 SSH 密钥从 localhost 转发到第三台机器。我认为这会起作用,但它不起作用:
localhost$ ssh -A -t myuser@myhost.something.something.com ssh 10.25.100.42
Permission denied (publickey).
Connection to myhost.something.something.com closed.
Run Code Online (Sandbox Code Playgroud)
为什么?如何在来自的单个命令中执行此操作localhost?以下是我使用详细标志时您可以看到的更多细节:
localhost$ ssh -v -A -t myuser@myhost.something.something.com ssh 10.25.100.42
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to myhost.something.something.com [X.X.X.X] port 22.
debug1: Connection established.
debug1: identity file /home/myuser/.ssh/id_rsa type …Run Code Online (Sandbox Code Playgroud) 当我使用 IPv6 连接到 CentOS 7 主机时<IPv6 host addr>%2,known_hosts即使该主机的主机密钥(带有主机的 IPv6 地址)已经存在于known_hosts.
代表什么%2?我使用的是 CentOS 7 中未经修改的 OpenSSH,版本 6.6.1p1-25,版本 25.el7_2。
更新:评论提到名称解析是一个可能的问题。事实上,我在客户端机器上使用 systemd-resolved。当我resolved从/etc/nsswitch.conf(hosts选项)中删除时,问题不再发生。这是与systemd-resolved-219-19.el7_2.7.x86_64)。
更新(2017 年 2 月):我刚刚注意到systemd 已解决的错误 4465,所以我注意到的行为是/只是一个错误,将在更高版本的 systemd 中修复。