标签: openssh

SSH:完全禁用密码身份验证

有没有办法完全禁用密码身份验证?命令行如下:

ssh -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no machine" 
Run Code Online (Sandbox Code Playgroud)

它仍然要求输入密码。当然,如果可能的话,我想在不接触服务器的情况下做到这一点。

linux ssh unix command-line openssh

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

如何卸载/重新安装 cygwin 以使用 sshd?

我安装了 cygwin/sshd 没有很好的结果。我删除了 c:\cygwin 目录以重新安装。我手动删除了 sshd 管理员用户。

我再次重新安装了 cygwin,然后运行“ssh-host-config -y”。奇怪的是,它没有询问有关创建新用户的任何信息。而且程序真的很短。

$ ssh-host-config -y
 * 查询:覆盖现有的 /etc/ssh_config 文件?(是/否)是
 信息:创建默认的 /etc/ssh_config 文件
查询:覆盖现有的 /etc/sshd_config 文件?(是/否)是
 信息:创建默认的 /etc/sshd_config 文件
 信息:从 OpenSSH 3.3 开始,权限分离默认设置为 yes。
 信息:但是,这需要一个名为“sshd”的非特权帐户。
 信息:有关权限分离的更多信息,请阅读 /usr/share/doc/openssh
ME.privsep。
*查询:是否应该使用权限分离?(是/否)是
*** 信息:更新 /etc/sshd_config 文件

*** 信息:主机配置完成。玩得开心!

当我运行“cygrunsrv -S sshd”时,出现错误。“Win 32 错误 1069:由于登录失败,服务没有启动”。这是合理的消息,因为我以用户身份删除了 sshd,并且重新安装过程再次没有做任何事情。

我发现卸载有问题。

Q:如何完美卸载sshd相关的东西,重新安装?

cygwin openssh sshd

17
推荐指数
2
解决办法
6万
查看次数

如何在没有密码的情况下通过 SSH 连接到本地主机?

编辑:准确地放置所做的事情。

我需要在localhost没有密码的情况下通过SSH 连接,通常的做法(使用公钥)不起作用。

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: …
Run Code Online (Sandbox Code Playgroud)

ssh passwords openssh user localhost

17
推荐指数
2
解决办法
7万
查看次数

PermitRootLogin 是基于 UID 还是用户名?

手册页指出 PermitRootLogin

指定 root 是否可以使用ssh(1).

但是,不清楚此检查是基于用户名 ( "root") 还是 UID ( 0)。

如果将 root 帐户重命名为 会发生什么"admin"?将"admin"能够登录的时候PermitRootLogin=no

如果有两个 UID=0 的帐户,即"root"和 会发生"admin"什么?他们中的任何一个都可以登录吗?

ssh root openssh

17
推荐指数
2
解决办法
2014
查看次数

是否可以更新 Windows 10 中的内置 OpenSSH 客户端?

我遇到了内置 OpenSSH 客户端的某些问题,根据Win32-OpenSSH Github页面,这些问题似乎在较新版本中已解决。最新版本是 v7.9,而预装的客户端版本是 7.6p1。

PS C:\> ssh -V
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
Run Code Online (Sandbox Code Playgroud)

我知道可以在“应用程序和功能”设置页面中将 OpenSSH 作为可选功能安装,也可以使用 Powershell。在我的情况下,这似乎是徒劳的,因为显然已经安装了客户端。

PS C:\>  Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎不可能以这种方式更新客户端,而且 Github 页面似乎没有发布二进制文件。这是否意味着如果我想使用更新的版本,我必须自己制作二进制文件,它们甚至可以作为未签名的替代品或其他任何东西吗?也许有更简单的方法?

ssh powershell openssh windows-10

17
推荐指数
4
解决办法
2万
查看次数

如何确定服务器上为动态绑定的 openssh 反向隧道分配的端口?

在最新版本的 OpenSSH 上创建反向隧道时,可以指定远程端口 0 来绑定任何可用端口:

-R [bind_address:]port:host:hostport

...

如果端口参数为“0”,则侦听端口将在服务器上动态分配并在运行时报告给客户端。

openssh ssh 客户端联机帮助页

我的问题是如何(以自动方式)确定服务器上的此端口分配。向运行 ssh 客户端的主机报告它似乎没有帮助 - 但不是向目标报告,目标将要连接到此端口以访问客户端上的服务。

我能想到的两个类似选项正在运行

# netstat -ntlp
Run Code Online (Sandbox Code Playgroud)

在服务器上并通过 sshd 或查看输出来查找绑定在 127.0.0.1 上的可疑端口

# lsof -p $PPID | grep TCP | grep LISTEN
Run Code Online (Sandbox Code Playgroud)

但是从自动化的角度来看,这两种方法都不是令人愉快的,如果创建了多个这样的隧道,则没有任何方法可以将动态端口绑定回原始服务端口。

在 sshd 服务器端有效地获取活动隧道列表(本地和远程端口号)是否有任何遗漏,例如相当于 SSH_CONNECTION 环境变量,但对于活动隧道?

对于某些情况,我正在尝试创建可能非常多的并发反向隧道到主机,隧道返回到许多不同主机上的相同端口号。让 TCP 堆栈自动管理端口池似乎是最有效的方法。

ssh openssh ssh-tunnel

16
推荐指数
1
解决办法
4109
查看次数

具有“身份验证”功能的 GPG 用于什么?

GnuPG 子密钥可以标记为三种功能:Sign、Encrypt 和 Authenticate

虽然前两个操作被广泛使用和记录,但身份验证操作有点神秘。您只能使用以下--expert选项编辑主键来制作此类键:

$ gpg --expert --edit-key 889C36B7
gpg (GnuPG/MacGPG2) 2.0.17; Copyright (C) 2011 Free Software Foundation, Inc.
gpg> addkey    
...                  
Possible actions for a RSA key: Sign Encrypt Authenticate 
Current allowed actions: Sign Encrypt 
   (S) Toggle the sign capability
   (E) Toggle the encrypt capability
   (A) Toggle the authenticate capability
   (Q) Finished
...
Run Code Online (Sandbox Code Playgroud)

有关于 GPG 密钥用于进行 SSH 身份验证的传言,但我还没有阅读或找到使其工作的方法。还有几个关于[gpg][ssh]交互的悬而未决的问题:

GPG 和 SSH 密钥可以互换吗?

如何同时使用 gpg 和 SSH?

除此之外,我找不到“身份验证”子项的其他用途。

ssh authentication openssh gnupg

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

git pull 什么都不做 / git push 只是挂起 / debug1: 期待 SSH2_MSG_KEX_ECDH_REPLY

我在 ubuntu 13.10 和 12.10 中遇到了一个问题,尝试连接到 github(git clone / pull / push 或任何东西)会失败并且没有输出。

我检查了我的 /.ssh 目录config和任何 ssh 密钥。没有配置文件,并且 ssh 密钥id_rsa与我的 github.com 帐户上的相同。

我尝试 ping github 服务器并且也可以。

我按照 github 指南来调试情况 - 它建议

ssh -T -v git@github.com
Run Code Online (Sandbox Code Playgroud)

输出停止在:

debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Run Code Online (Sandbox Code Playgroud)

任何人都有一个解决方案可以让我的 git pull / push 等工作。

ssh git openssh github

16
推荐指数
2
解决办法
4万
查看次数

在新的 Windows 终端中打开 putty ssh-session

正如问题中所示,是否可以在一个窗口中的 Windows 终端中打开 Putty 会话?

或者也许有类似的 OpenSSH 选美比赛?

我可以使用 OpenSSH 创建 ssh 会话,但我需要为其设置密码。我不想每次都这样做。

windows ssh openssh putty windows-terminal

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

SSH 转义键(“~”)仅在连接卡住时有效?

当我的 SSH 连接没有响应时,我可以使用<enter>~.. 但是,当连接响应时,~转义不起作用。它只是在控制台打印一个 tilda。

因此,如果我想修改 SSH 端口转发并按<enter>~C<enter>,我得到的只是:

~C: command not found

(来自bash,不是来自ssh。)

我需要做什么才能使 SSH 转义密钥正常工作?

编辑:我发现了一个很大的线索:远程外壳实际上是ash,而不是bash。当我bash在远程机器上运行时,SSH 转义键起作用了!当我再次ashbashinside 中运行ash时,它不起作用!

但这很奇怪。转义密钥应该被 SSH 客户端捕获,甚至不会转发到远程 shell。那么,为什么哪个远程 shell 正在接收来自 SSH 的输入呢?

ssh openssh

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