通过ssh远程root登录
remote root login through ssh
我有 2 台不同的服务器,它们正在通过 ssh 远程访问。我目前正在编写一个 bash 脚本,该脚本每周通过 crontab 将一些档案从服务器 A 移动到服务器 B。脚本将从服务器 A 运行。自然地,在某些时候它需要登录到服务器 B。我设置了 RSA 密钥并且它们工作正常(运行 来自 A 的 ssh user@B 但它没有再问密码,我马上进去)。
问题是我拥有的用户@B 没有写入权限(B 上禁用了 ssh root 登录)。为了获得 root 访问权限,我需要使用我的普通用户@B 登录,然后输入 su - 并输入 root 密码,我有这个密码,当直接从 B 这样做时它可以工作。
我的问题是:我能否编写脚本以在通过 RSA 以普通用户@B 身份登录 B 后自动执行此操作(键入 su - 并输入 root 密码)?然后继续对 B 上目标文件夹中的文件进行 scp?
谢谢
是的,你可以用 sudo 来完成。
通过配置 sudo(使用 visudo,如 "man 5 sudoers" 中所述),您可以让非特权用户以 root 身份 运行 某些命令而不需要密码。
那你可以运行"ssh hostname sudo sometask"
因此,对于您的方案,首先使用 "scp" 将文件复制到目标位置,然后 运行 使用 sudo 在 target 主机上使用提升权限的脚本。
如果你想一次完成这两个操作,你可以在本地 运行 tar,将其通过管道传输到 ssh hostB sudo tar -C directory xf -
,这样 tar 运行在 hostB 上以 root 身份使用 root 权限解压它:
tar cf - directory | ssh hostB sudo tar -C directory xf -#
(未经测试)
我有 2 台不同的服务器,它们正在通过 ssh 远程访问。我目前正在编写一个 bash 脚本,该脚本每周通过 crontab 将一些档案从服务器 A 移动到服务器 B。脚本将从服务器 A 运行。自然地,在某些时候它需要登录到服务器 B。我设置了 RSA 密钥并且它们工作正常(运行 来自 A 的 ssh user@B 但它没有再问密码,我马上进去)。
问题是我拥有的用户@B 没有写入权限(B 上禁用了 ssh root 登录)。为了获得 root 访问权限,我需要使用我的普通用户@B 登录,然后输入 su - 并输入 root 密码,我有这个密码,当直接从 B 这样做时它可以工作。
我的问题是:我能否编写脚本以在通过 RSA 以普通用户@B 身份登录 B 后自动执行此操作(键入 su - 并输入 root 密码)?然后继续对 B 上目标文件夹中的文件进行 scp?
谢谢
是的,你可以用 sudo 来完成。
通过配置 sudo(使用 visudo,如 "man 5 sudoers" 中所述),您可以让非特权用户以 root 身份 运行 某些命令而不需要密码。
那你可以运行"ssh hostname sudo sometask"
因此,对于您的方案,首先使用 "scp" 将文件复制到目标位置,然后 运行 使用 sudo 在 target 主机上使用提升权限的脚本。
如果你想一次完成这两个操作,你可以在本地 运行 tar,将其通过管道传输到 ssh hostB sudo tar -C directory xf -
,这样 tar 运行在 hostB 上以 root 身份使用 root 权限解压它:
tar cf - directory | ssh hostB sudo tar -C directory xf -#
(未经测试)