!['\' 字符是否转义或成为我的 ssh 密钥密码的一部分](https://linux22.com/image/19706/'%5C'%20%E5%AD%97%E7%AC%A6%E6%98%AF%E5%90%A6%E8%BD%AC%E4%B9%89%E6%88%96%E6%88%90%E4%B8%BA%E6%88%91%E7%9A%84%20ssh%20%E5%AF%86%E9%92%A5%E5%AF%86%E7%A0%81%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86.png)
如果我做:
ssh-keygen -N password123\$ -f bobskeys
是\
转义$
字符还是成为密码的一部分?
或者更确切地说,在获取密码值bash
之前会进行任何转义吗?ssh-keygen
我需要逃避这个$
角色吗?
我正在运行 Centos 5.5 x64 和 bash 3.2.25
答案1
当您输入:
ssh-keygen -N password123\$ -f bobskeys
shell 将使用参数-N
password123$
-f
和执行 ssh-keygen bobskeys
。
如果你想password123\$
作为参数传递,你需要单引号它:
ssh-keygen -N 'password123\$' -f bobskeys
或反斜杠反斜杠:
ssh-keygen -N password123\\$ -f bobskeys
否则ssh-keygen
进程将看不到反斜杠。
答案2
从ssh-keygen
手册页:
密码短语与密码类似,只不过它可以是包含一系列单词、标点符号、数字、空格或任何您想要的字符串的短语。好的密码短语长度为 10-30 个字符,不是简单的句子或容易被猜到(英语散文每个字符只有 1-2 位熵,并且提供非常糟糕的密码短语),并且包含大小写字母、数字的混合,和非字母数字字符。
由于-N
参数是创建一个新的密码短语,因此该\
符号是释义的一部分。