如何使用可选密码和可选文件位置自动执行 ssh-keygen -t rsa?
How to automate ssh-keygen -t rsa with an optional passphrase and optional file location?
我想使用可选文件和可选密码自动执行 ssh-keygen,如果找到文件则覆盖。如果我在终端中写出脚本,它会问我三个问题。我根本不希望它提示我,只是 运行 和 return 响应或 return 错误。
到目前为止,这是我的代码:
#!/usr/bin/osascript
on run
set email to "myemail@email.com"
set result to do shell script "ssh-keygen -t rsa -C \"" & email & "\""
return result
end run
注意:This 问题非常相似,但发布者没有提到传入可选文件,也没有提到他如何处理已经存在的文件。
使用 -N
指定密码(或不使用密码)并使用 -f
指定文件位置,如果存在密钥,请先删除它们。例如:
set keyPath to "~/.ssh/my_rsa_key"
do shell script ("rm " & keyPath & " " & keyPath & ".pub &> /dev/null;:")
set email to "myemail@email.com"
set myPassPhrase to "abcdefgh"
do shell script ¬
"ssh-keygen -t rsa -C \"" & email & "\" -N \"" & myPassPhrase & "\" -f " & keyPath
(result
是分配给最后一条指令结果的自动变量,因此您不需要显式指定它,但如果您确实需要,可以将其替换为其他变量名已分配变量。)
此外,考虑到这些操作中的大部分都发生在 do shell script
内,您最好将整个操作作为 Bash 脚本来完成,例如:
#!/bin/bash
keyPath="~/.ssh/my_rsa_key"
email="myemail@email.com"
myPassPhrase="abcdefgh"
rm $keyPath $keyPath.pub &> /dev/null
ssh-keygen -t rsa -C "$email" -N "$myPassPhrase" -f "$keyPath"
我想使用可选文件和可选密码自动执行 ssh-keygen,如果找到文件则覆盖。如果我在终端中写出脚本,它会问我三个问题。我根本不希望它提示我,只是 运行 和 return 响应或 return 错误。
到目前为止,这是我的代码:
#!/usr/bin/osascript
on run
set email to "myemail@email.com"
set result to do shell script "ssh-keygen -t rsa -C \"" & email & "\""
return result
end run
注意:This 问题非常相似,但发布者没有提到传入可选文件,也没有提到他如何处理已经存在的文件。
使用 -N
指定密码(或不使用密码)并使用 -f
指定文件位置,如果存在密钥,请先删除它们。例如:
set keyPath to "~/.ssh/my_rsa_key"
do shell script ("rm " & keyPath & " " & keyPath & ".pub &> /dev/null;:")
set email to "myemail@email.com"
set myPassPhrase to "abcdefgh"
do shell script ¬
"ssh-keygen -t rsa -C \"" & email & "\" -N \"" & myPassPhrase & "\" -f " & keyPath
(result
是分配给最后一条指令结果的自动变量,因此您不需要显式指定它,但如果您确实需要,可以将其替换为其他变量名已分配变量。)
此外,考虑到这些操作中的大部分都发生在 do shell script
内,您最好将整个操作作为 Bash 脚本来完成,例如:
#!/bin/bash
keyPath="~/.ssh/my_rsa_key"
email="myemail@email.com"
myPassPhrase="abcdefgh"
rm $keyPath $keyPath.pub &> /dev/null
ssh-keygen -t rsa -C "$email" -N "$myPassPhrase" -f "$keyPath"