我正在通过 iSH 应用程序在 iPad 上尝试 Linux,但是,我似乎找不到我的用户名,当我执行 whoami 时它总是返回“root”。所以现在我很困惑如何 ssh 到另一台计算机,甚至如何 ssh 到我的 ipad,因为我尝试了多个命令来在 ipad 上查找我的 IP,但它不起作用。
例如,我尝试 ifconfig -a 但它显示 /proc/net/dev: 没有这样的文件或目录。
curl ifconfig.me 适用于公共 IP,但我需要 ssh 的主机 IP,但它没有显示给我。
另一个例子 :
Mathewss-iPad:~# hostname -I
hostname: unrecognized option: I
BusyBox v1.31.1 () multi-call binary.
Usage: hostname [OPTIONS] [HOSTNAME | -F FILE]
Get or set hostname or DNS domain name
-s Short
-i Addresses for the hostname
-d DNS domain name
-f Fully qualified domain name
-F FILE Use FILE's content as hostname
问题:无法通过 SSH 连接到我们的任何设备,因为:
- 找不到主机名只是“root”
- 无法检索主机 IP 地址
- 但在linux apk安装包、创建文件夹、更改目录等方面一切正常。
答案1
免责声明 1:我在具有以下规格的 iPhone 8 Plus 上运行了所有这些内容
- iOS 15.4
- 高山13.4
- 版本1.2.3
免责声明 2:当应用程序关闭/在后台运行时,ssh 服务器不会在 iSH 上运行。
设置 - iSH 作为本地网络上的 ssh 服务器
首次安装 iSH 时,您将以 root 身份开始。如果您想创建新用户:adduser -g“您的全名”,然后输入密码。
作为 root,您可以通过运行echo 'yourpassword' |添加密码。密码
假设您希望向新的非 root 用户授予 doas(如 sudo)权限:作为 root... apk add doas - 使用以下行修改 /etc/doas.conf 文件:permit您的用户名 - 关闭并重新打开应用程序,然后以用户身份登录
- 或者,您可以取消注释行 Permit persist :wheel
- 然后将您的用户添加到wheel组
adduserwheel
要创建主机密钥,请以 root 身份运行以下命令: ssh-keygen -A
此时,修改您的/etc/ssh/sshd_config文件以阻止 root 登录。确保您有以下行(未注释) PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication yes
免责声明 3:如果您无法以非 root 用户身份登录,则 PermitRootLogin yes 并通过以下方法进行故障排除:
ssh username@localhost -vvv
Alpine 使用 openrc 作为其 init 程序,它将管理每个新 iSH 会话的 sshd 服务的启动。
如果需要下载openrc:apk添加openrc
作为 root/sudo 用户,运行 rc-update add /usr/sbin/sshd default
然后 rc-service sshd 启动
检查您的 sshd 守护进程是否正在运行 rc-status default
要查找您的 IP,请进入 iPad 的 Wi-Fi 设置,点击网络名称旁边的“i”信息圆圈,然后查找您的 IPv4 地址。
现在从您的客户端设备
ssh iSHusername@iSHipaddress
您可以设置基于密钥的身份验证以实现更安全的访问 ssh-keygen -t ed25519
_enter an absolute path to your client .ssh folder and a passphrase (optional)_
- Copy the public key to your host machine.
ssh-copy-id -i *pathtopubkey* iSHusername@iSHipaddress
- Reload sshd service
rc-service sshd reload
确认服务正在运行 rc-status default
_you should do this everytime you make changes to the config files_
iSH 作为 ssh 客户端(本地主机)
在您的 iPhone 设置中,确保 iSH 可以访问本地网络,然后 ssh hostuser@hostipaddress
设置 - 来自 WAN(开放互联网)的 ssh
_在路由器上设置端口转发
- 就像是:
- 源端口:22(客户端设备的端口,除非修改)
- 转发端口:443(许多路由器允许通过此端口进行 ssh 流量)
- 目标端口:22(ssh服务器监听的端口)
- 就像是:
如有必要,在服务器计算机上配置防火墙
- 在 UFW
- sudo ufw 允许从 clientipaddress 到任何应用程序 OpenSSH
- 须藤 ufw 重新加载
- 在 UFW
使用动态端口转发进行连接 ssh -D 443 用户名@路由地址
重新运行命令,并
-vvv
选择在失败时进行调试
资料来源: https://wiki.alpinelinux.org/wiki/OpenRC https://github.com/ish-app/ish/wiki/Running-an-SSH-server https://www.youtube.com/watch?v=AtuAdk4MwWw ssh-keygen、ssh、sshd、sshd_config、ssh-copy-id 的手册页