我编写了一个小型 bash 脚本,它接受两个参数:目标 IP 地址和密码,然后调用如下命令:
sshpass -p "$PASSWORD" ssh -p 2022 "username@$DESTINATION" -t -o StrictHostKeychecking=no -o RemoteCommand="systemctl stop watchdog"
但是由于需要 sudo 权限,系统仍然要求我再次输入密码systemctl
。为什么系统没有sshpass
处理这个问题?
我编写了一个小型 bash 脚本,它接受两个参数:目标 IP 地址和密码,然后调用如下命令:
sshpass -p "$PASSWORD" ssh -p 2022 "username@$DESTINATION" -t -o StrictHostKeychecking=no -o RemoteCommand="systemctl stop watchdog"
但是由于需要 sudo 权限,系统仍然要求我再次输入密码systemctl
。为什么系统没有sshpass
处理这个问题?
我使用 TrueNAS 的 Rsync 作业将某些池备份到 Debian 服务器上。我通过客户端(本例中为 TrueNAS)和服务器上的 root 帐户通过 SSH 使用 rsync。运行的命令如下:
/usr/local/bin/rsync -a --delay-updates --delete-delay -X -p -r -t --exclude ‘clone-auto-*’ -M --log-file=/var/log/rsync/mypool.log -e ‘ssh -p 22 -o BatchMode=yes -o StrictHostKeyChecking=yes’ /mnt/Vol03/Subvol01/MyPool [email protected]:/mnt/backups
某些池中有数万个文件,但 rsync 作业无法成功完成,因为几十个文件会发出此错误:
rsync: get_xattr_names: llistxattr(“/some/old/file”,1024) failed: Invalid argument (22)
我的问题是:有人知道这个问题的根本原因吗?我似乎无法弄清楚为什么某些文件会出现此错误,而绝大多数文件不会出现此错误。
我知道问这个问题可能有点愚蠢,但我正在尝试弄清楚如何在 Windows 10 客户端和我的 Linux 服务器之间建立安全的 SSH 连接。我希望使用 SSH 密钥来实现这一点,尽管我一直在查看的指南或多或少告诉我如何在 Windows 上创建密钥,而不是如何设置 Windows 和 Linux 之间的连接。
为了获得一些额外的信息,我正在为每台机器生成一个新的密钥对,同时使用密码。我的所有密钥都存储在“C:\Users\username.ssh”中,以防万一这不是一个存储这些密钥的好地方,因为我不知道。只是想弄清楚这一点。
我知道如何创建密钥,我之前用 git 做过这个。我使用 Windows 10 中已安装的 OpenSSH 客户端执行此操作,因此直接从终端执行。
我遇到的问题是设置 Linux 端。我主要使用 Ubuntu 和 Raspberry Pi,它们都使用不同的 SSH 端口,只是为了让我更干净。
我只是在寻找一些好的文档,关于如何设置这些以使我的家庭实验室感觉更安全一些。
目前,Windows 11 中存在一个已知问题,即安装商店版本的 WSL(我相信这是通过 默认安装的wsl --install
)意味着无法wsl
通过 SSH进入机器使用。
然而,当我发现这是一个问题时,我已经安装了商店版本。我想正确切换到故障排除页面上提到的“Windows 内”版本的 WSL,但不幸的是,它没有链接到如何最好地做到这一点的说明。我试过运行例如,
wsl --uninstall
wsl --update --web-download
但这似乎还不够——当我通过 sshThe file cannot be accessed by the system.
运行时,我仍然会遇到这种情况wsl
。当前 WSL 版本:2.3.26.0。
最终,我想rsync
在 Debian 上运行以从 Windows 获取一些文件,例如,
rsync -vPn --rsync-path='wsl rsync' --remove-source-files my_user@my_ip:/mnt/c/rsync_testing .
但到目前为止,设置 WSL 似乎是先决条件。
如何对用于加密 SSH 私钥的密码短语强制实施密码短语策略?
我喜欢使用 PAMpam_pwquality
模块来强制用户帐户密码的复杂性,但我认为我不能将它与 SSH 密钥密码短语一起使用。
我正在传输远程主机上的数 TB 的数据。
目前我正在使用rsync -az
。最近我购买了一个大型外置硬盘 [USB-C,东芝];但它似乎比我的内置 SSD 慢。
在传输过程中,如何设置多阶段复制,从远程主机到内部 SSD 再到外部 SSD,以便只有内部 SSD 和外部 SSD 上都不存在的文件才会从远程主机传输?
仅供参考:不限于rsync
,远程主机是 Linux x86_64,本地主机是运行 macOS 15.2 的 Apple Macbook Pro 和 M3 Pro。
我正在使用 ubuntu 网络服务器,经常需要加载 apache 文件夹中的文件。通常我通过 SSH 会话使用 SFTP 客户端(如 filezilla 或 mobaterm)。每次我都需要运行 chown 和 chmod 命令来恢复文件和文件夹的所有权和权限,因为 apache 没有权限读取我用户的文件。
有什么方法可以强制文件创建需要特定的权限和所有权,或者像我这种情况的每个人在每次上传后都运行 chown/chmod?
如果我的术语有误,请原谅。多年来,我一直使用 PuTTy 通过 ssh 连接到各种框,然后使用 neovim 编辑文件。通常,当我退出 neovim 时,进入之前屏幕上显示的内容仍然存在。使用 Windows 终端时,我看到的是一个空白屏幕。
在大多数方面,Windows Terminal 似乎比 PuTTy 好得多,但尽管我搜索了很久,还是找不到设置或解决方案。许多人都坚信 WT 是 PuTTy 的绝佳替代品。
我想要获取 SFTP 服务器的主机密钥。
但是,我和 SFTP 服务器之间有一个经过身份验证的代理。我有关于该代理的以下详细信息:proxy_host
、和proxy_port
。proxy_user
proxy_password
我如何使用ssh-keyscan
/ssh
超越经过身份验证的代理?
我在我的 oracle linux 8 VM 中安装了 openssh-client 和 netcat。
我不想使用像 proxytunnel 或 corkscrew 这样的工具。
我尝试过的事情:
After=network.target
为After=network-online.target
通过systemctl edit --full sshd.service
/etc/systemd/system/sshd.service.d/network-online.conf
内容为[Unit]
After=network-online.target
After=network.target
为After=network-online.target
并添加Wants=network-online.target
通过systemctl edit --full sshd.service
每次 sshd.service 无法绑定到其 IP 地址时,第三次尝试都会有一个不同,当尝试 ssh 到 raspberry pi 时,它返回的不是通常的“连接被拒绝”,而是“kex_exchange_identification:读取:对等方重置连接”
我的目标是让我的树莓派在启动时成功启动 sshd.service。
我正在使用带有 NetworkManager 的 raspbian 12 bookworm 的 raspberry pi 1 b+。
@grawity 我希望它绑定到单独的地址,并且之前没有遇到过问题,以下是该命令的输出:
$ sudo systemctl list-dependencies --after network-online.target
network-online.target
● ├─networking.service
● ├─NetworkManager-wait-online.service
× ├─systemd-networkd-wait-online.service
● └─network.target
● ├─ifupdown-pre.service
● ├─networking.service
● ├─NetworkManager.service
● ├─systemd-networkd.service
● ├─wpa_supplicant.service
● └─network-pre.target
● └─ufw.service
@Jaromanda XI 需要能够配置 sshd_config 以进行密钥认证,我不明白为什么在启用 ssh 时应避免使用 raspi-config,但我会尝试在成像仪中启用它并重新安装,然后稍后编辑我的帖子