我目前有一个 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)
当前工作流程示例: …
最近,我安装了 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 没有任何运气。
任何帮助将不胜感激。
我想~/.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/机制?
目前,OpenSSH 7.8 (Fedora 28/Arch) 无法使用证书签名密钥与 OpenSSH 7.4 (CentOS 7) 服务器协商,如redhat 的 bugzilla 上提交的错误所述。OpenSSH 发行说明表明现在必须明确定义签名协商算法的更改。虽然现在允许使用 2 个新的签名算法(自 7.7 起),但由于错误或有意,ssh-rsa-cert-v01@openssh.com 用户证书不再能够用于身份验证。
重现步骤:
我试图通过修改证书签名过程中使用的算法来解决这个问题。
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) 作为使用带密钥对的 SSH 和 rsync 解决各种问题的背景,我想要一个简单的概述,了解 SSH 身份验证期间发生的事件序列,以及几个客户端和主机文件中的每一个如何发挥作用。
谷歌发现了很多细节层次的解释,要么范围狭窄,要么范围广泛,细节混乱。更不用说许多不正确或混乱的解释和论坛帖子。
我最终创建了几个图表来澄清两件事:
我将在下面的答案中发布这些内容。
我有3台电脑。A、B 和 C。
A 是我现在使用的那个。B 是一个 jumphost,我可以通过 SSH 从 A 使用ssh -t B_host ssh C_host.
我想做的是通过 SSHFS 命令将 C 的文件系统挂载到 A,但简要查看手册页没有显示任何链接命令。
这可能吗?
我查看了 ssh 手册 ( man ssh) 并阅读了-L和-R选项的定义,但不太明白其中的区别。两者似乎都能够将请求转发到所需的主机和端口。有人可以尝试向孩子解释其中的区别吗……这两个选项之间的主要区别是什么?
我在我的中添加了这个~/.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/known_hosts我的 Linux 机器上有这样的东西:
@cert-authority * ssh-rsa pubkeypubkeypubkey
Run Code Online (Sandbox Code Playgroud)
OpenSSH 客户端会自动信任任何带有签名主机密钥的服务器。
我经常在我的 Windows PC 上使用 PuTTY。我如何实现类似的目标?
我们有相当多的脚本用于使用提供的 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 连接一样简单。