菜鸟科技网

ssh命令如何输入密码?

最直接的方式(不推荐,仅作了解)

这是最直观的方法,你只需要在命令行中输入 ssh user@hostname,然后系统会提示你输入密码。

ssh命令如何输入密码?-图1
(图片来源网络,侵删)
ssh myuser@192.168.1.100

执行后,终端会显示:

myuser@192.168.1.100's password:

你直接输入密码并按回车即可。

为什么不推荐?

  • 密码明文显示:在某些旧的终端或配置下,你输入的密码字符会直接显示在屏幕上,非常不安全。
  • 脚本化困难:你无法在 Shell 脚本中自动使用这种方式,因为脚本无法“交互式”地输入密码。
  • 无历史记录:按上下箭头无法找到你之前输入过的密码。

更安全的方式(推荐)

现代的 OpenSSH 客户端默认会隐藏你输入的密码,当你输入时,终端不会有任何字符显示(光标也不会移动),这和输入银行卡密码的体验类似。

ssh命令如何输入密码?-图2
(图片来源网络,侵删)
ssh myuser@192.168.1.100

执行后,终端会显示:

myuser@192.168.1.100's password:

请直接输入你的密码,然后按回车,即使你看不到任何输入,只要输入正确并回车,连接就会成功。

优点:

  • 密码隐藏:防止旁窥者看到你的密码长度。
  • 简单直接:对于一次性的手动连接,这是最方便且安全的方式。

自动化和脚本化的方式(强烈推荐)

如果你需要在脚本或自动化流程中使用 SSH,前两种方式都不适用,这时,你有两个绝佳的选择:

ssh命令如何输入密码?-图3
(图片来源网络,侵删)

选项 A:使用 SSH 密钥对(最佳实践)

这是最安全、最推荐的长期解决方案,它通过加密的密钥对进行认证,完全不需要输入密码。

工作原理: 你生成一对密钥:一个私钥(存放在你的本地机器,必须保密)和一个公钥(需要上传到远程服务器)。

步骤:

  1. 在本地机器生成密钥对(如果还没有的话):

    # 一路按回车使用默认设置即可
    ssh-keygen -t rsa -b 4096

    这会在你的 ~/.ssh/ 目录下创建 id_rsa (私钥) 和 id_rsa.pub (公钥)。

  2. 将公钥上传到远程服务器

    # 将本地的公钥追加到远程服务器的 authorized_keys 文件中
    ssh-copy-id myuser@192.168.1.100

    执行此命令时,系统会最后一次要求你输入 myuser 的密码,验证成功后,你的公钥就会被安全地添加到远程服务器 ~/.ssh/authorized_keys 文件中。

  3. 免密登录: 完成上一步后,你再登录时就再也不需要密码了!

    ssh myuser@192.168.1.100

    你会直接登录成功,没有任何密码提示。

优点:

  • 极高的安全性:私钥比密码复杂得多,且可以设置密码短语进一步保护。
  • 完全自动化:非常适合脚本、CI/CD、自动化部署等场景。
  • 无密码管理烦恼:无需在脚本中硬编码密码。

选项 B:使用 sshpass 工具(不推荐,仅适用于无法使用密钥的环境)

sshpass 是一个专门用于在命令行中非交互式提供密码的工具。它有安全风险,请谨慎使用。

安装 sshpass

  • macOS (使用 Homebrew): brew install sshpass
  • Debian/Ubuntu: sudo apt-get install sshpass

使用方法

# -p 后面直接跟你的密码
sshpass -p 'your_password' ssh myuser@192.168.1.100

安全警告:

  • 密码明文暴露:你的密码会通过 ps 命令等系统工具被其他用户看到,也会被保存在 Shell 历史记录中,非常危险。
  • 仅限不安全网络:绝对不要在生产环境或有安全审计要求的服务器上使用。

相对安全的用法(仍然不完美): 你可以从文件中读取密码,而不是直接写在命令行里。

# 创建一个包含密码的文件(注意文件权限)
echo "your_password" > password.txt
chmod 600 password.txt  # 只有当前用户可以读写
# 使用 -f 选项从文件读取密码
sshpass -f password.txt ssh myuser@192.168.1.100

这比 -p 稍好,但密码仍然以明文形式存在于磁盘上。


总结与建议

场景 推荐方法 优点 缺点
手动、一次性连接 直接输入(密码隐藏) 简单、直接、密码不显示在终端 无法自动化
自动化、脚本、日常使用 方式三 A:SSH 密钥对 最安全、最稳定、完全自动化 需要初始配置
无法使用密钥的旧环境 方式三 B:sshpass 能实现脚本化 不安全,密码易泄露

最终建议:

  1. 对于个人或开发环境:请务必花几分钟时间配置好 SSH 密钥对,这是现代服务器管理的标准做法,一劳永逸。
  2. 对于临时性的手动操作:直接使用 ssh user@host,然后输入密码即可,系统会自动为你隐藏输入。
  3. 尽量避免使用 sshpass,除非你非常清楚其风险,并且没有其他选择。
分享:
扫描分享到社交APP
上一篇
下一篇