我在这里读过许多SSH连接拒绝发布的帖子,写完之后还会继续浏览这些帖子,但是我不会盲目地尝试每一个解决方案,希望它对我的计算机有用,我想我会写出我的故障排除解决过程。
目标:使用ssh将日志根目录到我的服务器。
问题:
$ ssh root@123.456.78.911
ssh: connect to host 123.456.78.911 port 22: Connection refused
Context Server:数字海洋(虚拟机-每月5美元交易)操作系统: Windows 10,Linux子系统,Ubuntu,Linux子系统OpenSSH -客户端和服务器都安装了防火墙- SSHD增加了津贴(进出)
故障排除过程
编辑:添加详细模式输出
ssh -v root@xxx.xxx.xx.xxx
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to xxx.xxx.xx.xxx [xxx.xxx.xx.xxx] port 22.
debug1: connect to address xxx.xxx.xx.xxx port 22: Connection refused
ssh: connect to host xxx.xxx.xx.xxx port 22: Connection refused
我以前在这台电脑上连接过我的服务器,但这个月早些时候我不得不重新设置工厂。第一次遇到麻烦,我不记得是怎么解决的(这是一年前的事)。我确信ssh是在DO服务器端启用的,所以我的猜测是私钥和公钥放错了位置,我必须在某个地方更改文件路径。我记得在Windows中使用Ubuntu文件位置有一个问题。
是否必须将公钥和私钥添加到其他授权文件中?或者关键位置?
发布于 2020-12-07 02:02:44
首先:了解应该发生的事情的基本原理。
Windows桌面上的SSH客户端进程应该连接到DigitalOcean VM上的TCP端口22。一旦建立了连接,它就应该使用SSH密钥作为用户root
进行身份验证。
这意味着您不需要桌面上的sshd
(或"ssh服务“):只有当您希望允许入站SSH连接到您的桌面时,才需要它。
你被“拒绝了连接”。这意味着以下几点之一:
一旦可以建立到VM的SSH端口的基本TCP连接,就可以继续对身份验证进行故障排除。
如果访问SSH端口的权限不限于已知的IP地址,则允许在云VM上进行密码验证的登录是一个<#>very错误的想法:有被黑客攻击的服务器和自动恶意软件将花费全部时间扫描互联网上启用SSH的主机,并试图暴力攻击任何知名的用户帐户,包括root
。
sshd
( SSH服务)甚至有一个特殊的设置,它可以强制直接登录为root
,或者总是被拒绝,或者只接受密钥身份验证,即使其他用户可以启用密码身份验证。强烈建议云服务使用该设置。
如果一个VM是由多个人维护的,那么使用个人用户帐户登录,然后使用sudo
可以更容易地使用日志来找出是谁做的--如果有必要怎么办。云提供商可能要求您使用非root
的特定用户帐户进行初始登录;一旦首次成功连接并获得根访问权限,显然可以根据需要配置VM。
通常,云提供商将为VM的初始SSH访问提供预先生成的SSH私钥。有几种可能的密钥文件格式:*.ppk
文件用于PuTTY,这是一个常见的免费Windows客户端(现在也可用于Linux),而没有特定后缀的id_*
用于OpenSSH。通常,可以使用相应的密钥生成器工具将密钥从一种格式转换为另一种格式(如PuTTYgen keyfile.ppk -O private-openssh -o id_openssh
,用于将*.ppk
文件转换为OpenSSH格式)。
如果您使用的是WSL的命令行SSH客户端,这是OpenSSH的一种形式。通常,OpenSSH在本地用户主目录的.ssh
子目录(根据所使用的算法命名为id_rsa
、id_dsa
、id_ecdsa
、id_ed25519
等)中查找默认私钥。如果存在任何这些私钥文件,客户端将自动将它们提供给远程服务器,如果它允许基于密钥的身份验证。
在WSL上,Unix样式主目录的位置可能不那么明显,因此您可能希望使用-i
选项显式指定要使用的私钥文件。
在使用密钥身份验证时,仍然必须指定正确的用户名,因此SSH命令可能如下所示:
ssh -i /some/where/id_digitalocean_privatekey root@123.456.78.911
发布于 2020-12-06 03:22:54
首先。不要使用此设置。其实你根本不想用那些MACs电脑!
您试图启用密码身份验证吗?就为了看看这个有用吗?您还检查了/var/log/auth.log吗?您在/etc/ sshd /sshd_config中增加了sshd日志记录的详细程度吗?
对我来说,它更多地关注的方向是,sshd守护进程没有正确地侦听端口22。这就是为什么你被拒绝了连接。您可以使用nmap检查该端口是否真的打开。
sudo nmap -sSV -O -p 22 -v9 destination_IP
https://unix.stackexchange.com/questions/623143
复制