AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 417206
Accepted
mschilli
mschilli
Asked: 2018-01-16 01:28:06 +0800 CST2018-01-16 01:28:06 +0800 CST 2018-01-16 01:28:06 +0800 CST

与远程用户共享 ssh 会话/密钥

  • 772

假设以下设置:

  1. 用户bob在他的工作站上本地工作foo。
  2. 用户alice在她的工作站上本地工作bar。
  3. 用户可以通过存储在 中的密钥bob对服务器进行 ssh 访问。baz:22bob@foo:.ssh/id_rsa
  4. 用户alice可以通过 ssh 访问bob工作站foo:22,但不能访问服务器baz。

有没有办法让bobsshbaz共享他的会话(通过端口转发?)或密钥(通过ssh-agent转发?),以便alice可以baz从barvia foo(假设bob的身份打开foo)访问?


附录:

还有一些我应该澄清的想法:

  1. bob不想alice知道他的密码
  2. bob不希望alice能够继续运行rm -rf /home/bob(foo但baz显然这会很好)。

正如@mukesh-sai-kumar所建议的那样,一个人可以登录(作为?)并从那里使用共享密钥。alicefoobobssh

到目前为止,我能看到的最佳方法是为 on 创建一个新的密钥对alice,bar允许打开公钥并通过文件中的选项foo自动运行。ssh bob@bazcommand="ssh [...]"authorized_keys

这将允许设置实际使用新的密钥对 viassh baz并使用此特定密钥将登录转发到via (授权的密钥但仅限于呼叫)。barssh bob@fooalice@bar:.ssh/configbob@foobob@bazbob@foo:.ssh/authorized_keysalicecommandssh baz

这样,两个新的约束就会得到满足,alice甚至不会看到任何东西,正如这个假设的交互式会话所示:

[alice@foo:~] (1) $ hostname
foo    
[alice@foo:~] (2) $ whoami
alice
[alice@foo:~] (3) $ ssh baz
[bob@baz:~] (1) $ hostname
baz    
[bob@baz:~] (2) $ whoami
bob
[bob@baz:~] (3) $ exit
[alice@foo:~] (4) $ hostname
foo    
[alice@foo:~] (5) $ whoami
alice
[alice@foo:~] (6) $

唯一剩下的问题是bobssh 密钥foo需要与 由from (via ?)bob发起的会话共享。sshalicessh-agent

ssh ssh-tunneling
  • 2 2 个回答
  • 739 Views

2 个回答

  • Voted
  1. Mukesh Sai Kumar
    2018-01-16T05:58:14+08:002018-01-16T05:58:14+08:00

    解决方案:嵌套 SSH 会话。

    alice 可以通过 SSH 以 bob 的身份登录到 bob 的工作站(foo:22),然后通过 SSH 以 bob 的身份(以及他的密钥,因为现在 alice 都可以访问它们)登录到 baz。

    基于命令的表示形式:

    alice@bar:~$ ssh bob@foo
    bob@foo's password:
    ---snip----
    bob@foo:~$ ssh -i /home/bob/.ssh/id_rsa (your-user)@baz
    ----RSA ID based authentication----
    your-user@baz:~$
    

    图解表示:

    alice@bar -> Log into foo as user bob -> use bob's stored key to log into baz -> Achieved!
    
    • 1
  2. Best Answer
    PKapp
    2018-01-18T05:02:48+08:002018-01-18T05:02:48+08:00

    Alice 可以给 Bob 她的公钥,Bob 可以在他自己的.ssh/authorized_keys文件中添加一行,这将允许 Alice 在 Bob 的工作站上启动一个 ssh 会话(作为 Bob)foo。使用该command=选项,Bob 可以限制 Alice 的密钥不授予交互式 shell,而是授予 Bob 的嵌套 ssh 连接baz,并使用 Bob 在本地可访问的密钥bar。

    command="ssh -I .ssh/id_rsa bob@baz:22" ssh-rsa AAA...== alice@whatever

    或者,您可以包含更多约束选项(no-port-forwarding,from=等 - 请参阅sshdAUTHORIZED_KEYS 文件格式的手册页部分)。

    当 Alice 运行ssh bob@bar并使用她的私钥进行身份验证时,她将连接bar到 ssh 会话baz,而无需对 Bob 工作站上的中间会话进行任何控制。

    请注意,从baz(日志记录、安全审计)的角度来看,Alice 发起的这个隧道连接与 Bob 从他自己的工作站发起的“正常”连接没有区别。这可能是您要求的,但不是您想要的。

    为了使受保护的密钥可供 Alice 用于她的会话,您可以将环境变量显式设置为SSH_AUTH_SOCKBob 用于其会话的路径(将authorized_keys条目更改为command="SSH_AUTH_SOCK=/path/to/bobs/agent_socket ssh bob@baz:22" ssh-rsa AAA...)以避免在路径更改时更新路径(通常注销/登录),Bob 可以使用指定的显式路径代表 Alice 运行一个专用代理(ssh-agent -a ~/.ssh/agent_for_alice并且只添加特定的密钥SSH_AUTH_SOCK=~/.ssh/agent_for_alice ssh-add ~/.ssh/id_rsa并输入密码。

    • 1

相关问题

  • 为什么 ssh 实用程序被视为 pty?

  • Auto-SSH 手动工作,但不在后台工作

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • rsync 端口 22 和 873 使用

  • SCP突然中止:管道损坏,消息验证码不正确

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve