如何使用可选的密码短语和可选的文件位置自动化ssh-keygen -t rsa?

时间:2015-01-17 01:00:24

标签: applescript ssh-keys ssh-keygen

我想使用可选文件和可选密码自动化ssh-keygen,如果找到文件则覆盖。如果我在终端写出脚本,它会问我三个问题。我基本上不希望它提示我,只是运行并返回响应或返回错误。

到目前为止,这是我的代码:

#!/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问题非常相似,但海报没有提及传入可选文件,也没有提及他如何处理已存在的文件。

1 个答案:

答案 0 :(得分:1)

使用-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"