标签: ssh

Chroot SFTP - 可能允许用户写入当前(chroot)目录

我目前有一个 WORKING SFTP 登录,使用私钥进行登录,并且用户被 chroot 到他们的主目录。

目标:保留用户 chroot 但允许 WRITE 访问相对 chroot 目录,而无需在任何地方指定任何路径或 cd。

换句话说,当 sftp 用户登录时,我不希望他们必须 cd 到另一个路径才能上传文件。

由于 chroot 目录需要完全的 root 所有权(由于 chroot 设计),我不确定这是否可能。

在 /etc/passwd 中:

sftpuser:x:1006:1006:,,,:/home/sftpuser:/bin/false

用户登录公钥位于:

/home/sftpuser/.ssh/authorized_keys

sshd_confg 中的 Chroot 规则:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no
Run Code Online (Sandbox Code Playgroud)

主目录权限:

# ls -l /home/ |grep sftpuser
drwxr-xr-x 5 root      root     4096 May  4 11:24 sftpuser

# ls -l /home/sftpuser/
total 4
drwxrw-r-x 3 sftpuser sftpuser 4096 May  4 11:23 sftp_share
Run Code Online (Sandbox Code Playgroud)

当前工作流程示例: …

linux ssh chroot sftp

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

当 SSH 在 RHEL 机器上使用 AD Creds 时,连接被 UNKNOWN 端口 65535 关闭

最近,我安装了 PAM 以及在我的 RHEL 7.5 机器上通过 AD 启用 ssh 身份验证所需的所有必要软件包。

当我尝试使用“ssh user@domainname@hostname”进行 SSH 连接时,它会询问我的密码,一旦我输入密码,我就会收到错误消息:连接被 UNKNOWN 端口 65535 关闭。

这发生在运行 RHEL 7.5 的多台机器上。sssd用于绑定AD,没有防火墙,系统时间与AD服务器同步,permit_groups中添加了合适的组,账户没有被锁定。拖尾 /var/log/secure 显示以下错误:

sshd[12752]: reprocess config line 145: Deprecated option RhostsRSAAuthentication
sshd[12752]: pam_krb5[12752]: account checks fail for 'user@domainname': user disallowed by .k5login file for 'user@domainname'
sshd[12752]: Failed password for user@domainname from ip port 53166 ssh2
sshd[12752]: fatal: Access denied for user user@domainname by PAM account configuration [preauth]
Run Code Online (Sandbox Code Playgroud)

我已经重新启动 sssd 和 sshd 没有任何运气。

任何帮助将不胜感激。

linux ssh active-directory pam

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

您如何从谷歌计算引擎实例安全地检索 ssh 主机密钥?

我想~/.ssh/known_hosts用新创建的 GCE 实例的主机密钥信息更新我的。但我不确定如何安全地检索该信息。

我想像

gcloud compute ssh <GCEUSER>@<GCEHOST> --command='ssh-keyscan 127.0.0.1'
Run Code Online (Sandbox Code Playgroud)

可能工作。但是(根据gcloud 计算 ssh 文档)似乎只是一个包装器ssh(并且,根据StrictHostKeyChecking=no在 $HOME/.config/gcloud/logs/ 下的关联日志文件中列出的参数中看到的,显然没有做任何事情某种检查主机的身份)。

似乎确实有一种方法可以使用 Web 控制台来启动基于浏览器的 ssh 会话(并以交互方式/手动方式运行ssh-keyscan),但是 1)我看不到内部结构以了解它是否真的像它应该的那样安全和 2) 不是用于脚本集成的有效 API。

是否有gcloud用于安全检索 GCE 实例的主机密钥的 API/机制?

security ssh ssh-keys google-compute-engine

5
推荐指数
1
解决办法
1581
查看次数

更改 ssh-keygen 中的默认证书签名算法

目前,OpenSSH 7.8 (Fedora 28/Arch) 无法使用证书签名密钥与 OpenSSH 7.4 (CentOS 7) 服务器协商,如redhat 的 bugzilla 上提交的错误所述。OpenSSH 发行说明表明现在必须明确定义签名协商算法的更改。虽然现在允许使用 2 个新的签名算法(自 7.7 起),但由于错误或有意,ssh-rsa-cert-v01@openssh.com 用户证书不再能够用于身份验证。

重现步骤:

  1. ssh-keygen -t rsa -b 2048 -f 测试
  2. ssh-keygen -s cert.key -I "signedcert" -n testuser test.pub
  3. ssh -i 测试 -vvv 用户@serverip

我试图通过修改证书签名过程中使用的算法来解决这个问题。

ssh-keygen -L -f test.crt
test.crt:
    Type: ssh-rsa-cert-v01@openssh.com user certificate
    Public key: RSA-CERT SHA256:<fingerprint>
    Signing CA: RSA SHA256:<fingerprint>
Run Code Online (Sandbox Code Playgroud)

ssh-keygen 的默认设置是在 ssh-rsa-cert-v01@openssh.com 中对密钥进行签名。

根据 OpenSSH 7.8 文档,PROTOCOL.certkeys。

All certificate types include certification information along with the
public …
Run Code Online (Sandbox Code Playgroud)

linux ssh fedora centos arch-linux

5
推荐指数
1
解决办法
2319
查看次数

SSH 身份验证序列和密钥文件:解释

作为使用带密钥对的 SSH 和 rsync 解决各种问题的背景,我想要一个简单的概述,了解 SSH 身份验证期间发生的事件序列,以及几个客户端和主机文件中的每一个如何发挥作用。

谷歌发现了很多细节层次的解释,要么范围狭窄,要么范围广泛,细节混乱。更不用说许多不正确或混乱的解释和论坛帖子。

我最终创建了几个图表来澄清两件事:

  • 准备使用密钥进行 SSH 通信时涉及哪些文件和操作
  • 这些文件在建立连接的过程中会做什么。

我将在下面的答案中发布这些内容。

ssh pki ssh-keys

5
推荐指数
1
解决办法
1890
查看次数

通过 jumphost 的 SSHFS

我有3台电脑。A、B 和 C。

A 是我现在使用的那个。B 是一个 jumphost,我可以通过 SSH 从 A 使用ssh -t B_host ssh C_host.

我想做的是通过 SSHFS 命令将 C 的文件系统挂载到 A,但简要查看手册页没有显示任何链接命令。

这可能吗?

ssh fuse sshfs

5
推荐指数
3
解决办法
3923
查看次数

SSH:-L 和-R 有什么区别?

我查看了 ssh 手册 ( man ssh) 并阅读了-L和-R选项的定义,但不太明白其中的区别。两者似乎都能够将请求转发到所需的主机和端口。有人可以尝试向孩子解释其中的区别吗……这两个选项之间的主要区别是什么?

linux ssh port port-forwarding ssh-tunnel

5
推荐指数
1
解决办法
965
查看次数

SSH跳转和本地命令

我在我的中添加了这个~/.ssh/config以帮助避免愚蠢的错误:

Host *.prod-domain.com
    LocalCommand print "WARNING: PROD" && print "continue ?" && read
    PermitLocalCommand yes
Run Code Online (Sandbox Code Playgroud)

这使得ssh打印警告并提示,当我尝试连接到下一个主机prod-domain.com。

现在,大多数主机不会公开暴露 ssh,因此我们必须通过网关。我曾经做过

ssh -J gateway.prod-domain.com target.prod-domain.com
Run Code Online (Sandbox Code Playgroud)

但是在启用本地命令的情况下,ssh 失败:

Bad packet length 1231976033.
ssh_dispatch_run_fatal: Connection to UNKNOWN port 65535: message authentication code incorrect
Run Code Online (Sandbox Code Playgroud)

直接连接(例如ssh gateway.prod-domain.com)仍然可以正常工作,如果我评论本地命令,则使用跳转连接可以工作。

本地命令和 ssh 跳转是否不兼容?它是否记录在某处,有没有办法让它工作(比如在“跳跃”时禁用本地命令),或者我是否遇到了错误?

ssh

5
推荐指数
1
解决办法
1739
查看次数

如何在 PuTTY 中信任 CA 签名的主机密钥?

~/.ssh/known_hosts我的 Linux 机器上有这样的东西:

@cert-authority * ssh-rsa pubkeypubkeypubkey
Run Code Online (Sandbox Code Playgroud)

OpenSSH 客户端会自动信任任何带有签名主机密钥的服务器。

我经常在我的 Windows PC 上使用 PuTTY。我如何实现类似的目标?

ssh putty certificate-authority

5
推荐指数
1
解决办法
1197
查看次数

通过 SSH 的 Windows FTP

我们有相当多的脚本用于使用提供的 Windows 在 Internet 上与供应商上传和下载文件ftp.exe。这是通过 SideWinder 代理的,并通过 FTP 发送给供应商,但他们支持 SFTP。

我们利用ftp -s:filenamewhich指定一个包含 FTP 命令的文本文件;命令将在 FTP 启动后自动运行。

ftp -n -s:dir\filename.ftp proxy.example.com
Run Code Online (Sandbox Code Playgroud)

我们想要做的是在提供的 Windows 上建立隧道,ssh.exe以便我们可以消除 SideWinder 代理并继续使用现有filename文件进行 FTP 命令。

这是否可以使用提供的 Windowsssh.exe以及ftp.exe配置是什么?

我知道有免费的 SFTP 程序。我们正在尝试通过对现有系统进行最少的更改来实现这一目标。希望它像 FTP 连接和操作之前脚本中的 SSH 连接一样简单。

windows ssh ftp sftp

5
推荐指数
2
解决办法
878
查看次数