如何使用命令行将我的 ssh 公钥添加到 Mikrotik 路由器设备?
Posted
技术标签:
【中文标题】如何使用命令行将我的 ssh 公钥添加到 Mikrotik 路由器设备?【英文标题】:How can I add my ssh public key to a Mikrotik router device using the command line? 【发布时间】:2021-10-21 01:37:53 【问题描述】:Mikrotik 不支持ssh-copy-id
,它将~/.ssh/id_rsa.pub
复制到几乎所有Linux 设备上主机的.ssh/authorized_keys
文件中。
是否有等效的方法来授权 Mikrotik RouterOS 设备上的密钥,这样我就不必输入密码,而是使用密钥或解锁密钥和 ssh-agent 自动登录?
【问题讨论】:
请将您的问题移至Super User(在此处删除,在此处重新发布)。这是off-topic here。 这已经在谷歌上显示为第 5 次点击。超级用户不会显示在任何搜索结果下。我也认为这属于“程序员常用的软件工具”。 IE。 ssh,以及越来越多的基于 Linux 的 Mikrotik 路由器,并且比我所在地区的任何其他设备都更常见。 但这不是“一个......软件开发独有的问题”。 我想不出除了在软件开发领域之外的任何地方,您都想这样做,尤其是在开发网络管理系统时。当然,它在配置和代码之间的模糊边界上......但它更多的是软件,而不是说软件是纯粹的数学......但我不希望每个人都同意我的观点。然而,我坚持,因为我相信我“没有错”。 【参考方案1】:Mikrotik RouterOS 仅允许您从复制的文件中导入密钥 - 但您可以从命令行创建此文件。这是一个适用于任何 Linux 主机的单行代码:
ssh 192.168.88.1 "/file print file=mykey; file set mykey contents=\"`cat ~/.ssh/id_rsa.pub`\";/user ssh-keys import public-key-file=mykey.txt;/ip ssh set always-allow-password-login=yes"
这就是你需要做的。
说明
上面的逐行版本:
$ ssh user@router
[user@router] > /file print file=mykey;
[user@router] > /file set mykey contents="copy and paste contents of ~/.ssh/id_rsa.pub here";
[user@router] > /user ssh-keys import public-key-file=mykey.txt
[user@router] > /ip ssh set always-allow-password-login=yes"
这将允许您简单地ssh
而不会被路由器提示输入密码。请注意,如果您的私钥受密码保护,系统会提示您输入私钥文件密码,但该密码不会发送到路由器。您可以使用ssh-agent
和ssh-add
将您的私钥缓存在主机上,如果它受密码保护 - 强烈推荐 - 否则任何拥有副本的人都可以访问您所有允许您的密钥的路由器。
加速初始连接
另一个针对 ssh
的一般可用性提示 - 如果您将以下内容添加到 /etc/ssh/ssh_config
,则连接将保持打开状态 - 并可重复使用 - 这会大大加快您在经常登录的设备上的登录速度:
ControlMaster auto
ControlPath ~/.ssh/socket-%r@%h-%p
ControlPersist 600
唯一的障碍是,如果连接超时,如果您在该超时内重新连接,连接将挂起。当然也可以手动删除socket,可以通过find .ssh/sock*
找到
【讨论】:
以上是关于如何使用命令行将我的 ssh 公钥添加到 Mikrotik 路由器设备?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用命令行将“其他链接器标志”添加到 xcode 项目?
如何使用 VLC 或 FFMPEG 命令行将外部音轨添加到视频文件