我在家里很懒,对我的家用机器使用密码认证。我已准备好转向基于密钥的身份验证。网络上有很多关于如何执行此操作的选项,包括 catting 然后 ssh the key over,直接 scping key over 等。
我正在寻找复制密钥的最简单和推荐的方法,希望 Ubuntu ssh 包中的某处有一个方便的包装器?
我已经知道如何关闭密码登录。
我正在使用 Ubuntu 11.10。我ssh每天都用于连接许多服务器,所以我将它们的参数放在.ssh/config文件中,如下所示:
Host Home
User netmoon
Port 22
HostName test.com
Run Code Online (Sandbox Code Playgroud)
有没有办法将每个连接的密码放在这个文件中,这样,当服务器要求输入密码时,终端输入其密码并将其发送到服务器?
我需要这个,因为有时我远离电脑,当我回去时,输入密码并按Enter终端说CONNECTION CLOSED。
PS 我不想使用公钥/私钥对。
我想通过添加另一个因素来加强我的 SSH 登录的身份验证:密码生成器设备或我手机上的密码生成应用程序。默认设置中唯一明显的选项是固定的密码和密钥对。我怎样才能做到这一点?
(如果我使用密码和密码生成器,这提供了两步验证(2FA):密码是“我知道的”,密码是“我拥有的”。)
可能重复:
如何设置无密码 SSH 登录?
我正在使用 ssh 连接到远程服务器。每次都提示我提供密码,但我记得能够设置一种身份验证密钥,因此不需要密码。
然而,已经很久了,我几乎忘记了关于它的一切,除了“钥匙”这个词。你设置并忘记的那些事情之一,我从来没有完全理解它。
它是如何完成的?
作为启动脚本的一部分,我必须自动打开几个 gnome-terminal 窗口,其中一个终端会自动发送:
ssh user@192.168.1.3
Run Code Online (Sandbox Code Playgroud)
这样做的限制是我仍然需要输入密码才能完成 SSH 连接。
我想要做的是让我的脚本启动命令并完成连接。在这种情况下,我试图按照此处接受的答案中概述的说明进行操作。
从我希望连接的系统中,我运行:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Run Code Online (Sandbox Code Playgroud)
然后它提示我输入密码。我把它留空了,因为我不确定它的用途,所以我假设设置一个需要在每次使用时使用所述密码解锁它。
继续上面链接的说明,然后我运行并收到以下信息:
ssh-copy-id user@IP
ERROR: No identities found
Run Code Online (Sandbox Code Playgroud)
快速搜索显示我需要指定密钥的位置,因为它不在默认保存位置,所以我修复了:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3
Run Code Online (Sandbox Code Playgroud)
在询问服务器的密码后,它成功添加了密钥。但是,在尝试使用“ssh user@IP”登录时,仍然提示我输入密码。
据我所知,我正确地遵循了链接的说明,所以要么我遗漏了什么,要么现有的配置阻止我让它工作?
两个系统都使用 18.04 和 openssh。
我在 Ubuntu Server 12.04 (A) 上为 SSH 服务器设置公钥身份验证时遇到问题,以便从 Ubuntu Server 13.04 (B) 进行身份验证。
我现在在做什么(我正在尝试按照此处的说明进行操作):
ssh-keygen -C "",不使用密码,写入/.ssh/id_rsa- 我没有收到任何错误ssh-copy-id -i /.ssh/id_rsa user@host-a- 还有一条成功消息ssh -i /.ssh/id_rsa user@host-a- 我仍然需要输入我的密码user@host-a在A上,我检查了/.ssh/authorized_keys运行后是否修改了ssh-copy-id,是这种情况。此外,在两台设备上,我都将此添加到/etc/ssh/sshd_config:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
有谁知道这里可能有什么问题?
这是我/var/log/auth.log在机器 A 上的尾巴:
Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on 0.0.0.0 port 22.
Jun 13 22:17:56 laptop-camil sshd[12344]: …Run Code Online (Sandbox Code Playgroud) 我知道如果我想启动一个 SSH 隧道
ssh -d 9000 user@userserver
Run Code Online (Sandbox Code Playgroud)
这是在端口 9000 上为主机“userserver”上名为“user”的用户打开动态隧道的一种解决方案
但是,如何在 Ubuntu 中自动执行此过程,以便每次登录并启动隧道时都不必打开终端?我想在登录的那一刻就使用 SSH。
我知道我可以创建一个 bash 文件,但是我是否不必以明文形式存储我的服务器用户的密码,因为在初始命令之后我会被提示输入密码?
目前我有两台我要连接的远程机器。对于一个我使用带密码的私钥,另一个我使用 root 密码。
现在,当我想使用 root 密码身份验证连接到机器时,首先 ssh 会询问我的计算机密码短语,其中私钥在我的 ~/.ssh 目录中,然后当我输入正确的密码短语时,让我输入我的计算机的密码使用 root 密码连接。
有没有办法保存会话和连接选项,例如在 Putty 中?
来自man usermod:
注意:如果您希望锁定帐户(不仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。
我目前正在开发两台设备,一台正在测试另一台。它们基于 beaglebone black,并在 Ubuntu 14.04 下运行。我的问题是我必须在测试设备上但从测试设备上检测并安装 USB 外部存储设备。
我尝试了一些命令来避免输入密码,例如
sshpass -p <password> ssh aet@192.168.100.200 StrictHostKeyChecking=no "echo gra64nola | sudo -S true mount /dev/sda1/ /media"
Run Code Online (Sandbox Code Playgroud)
但是当我执行这一行时,远程设备上没有任何反应。我在这个命令行上尝试了几个不同的版本,但我现在迷路了。我不知道如何做我想做的事。
有关信息,我在 node-red 下工作,并执行这三个命令行来检测和挂载设备。aet@192.168.100.200 是被测设备的IP。它通过以太网与测试交换机连接在一台公共交换机上。
sshpass -p <password> ssh aet@192.168.100.200 StrictHostKeyChecking=no "echo gra64nola | sudo -S true mount /dev/sda1/ /media"
sshpass -p <password> ssh aet@192.168.100.200 StrictHostKeyChecking=no "echo gra64nola | sudo -S true umount /media"
sshpass -p <password> ssh aet@192.168.100.200 -o StrictHostKeyChecking=no "echo gra64nola |sudo -S find /media/FINDME.txt"
Run Code Online (Sandbox Code Playgroud)
第三个用于查找文件以检查设备的 USB 端口是否正常工作。我不想让任何人来做我的全部工作,但是你能知道如何安装这个外部磁盘吗?
谢谢你的帮助。