mirror of
https://github.com/rclone/rclone.git
synced 2024-11-22 08:23:47 +01:00
Merge branch 'master' into 7935-sftp-read-ssh-config-file
This commit is contained in:
commit
e2b12439b1
@ -99,6 +99,11 @@ Only PEM encrypted key files (old OpenSSH format) are supported. Encrypted keys
|
|||||||
in the new OpenSSH format can't be used.`,
|
in the new OpenSSH format can't be used.`,
|
||||||
IsPassword: true,
|
IsPassword: true,
|
||||||
Sensitive: true,
|
Sensitive: true,
|
||||||
|
}, {
|
||||||
|
Name: "pubkey",
|
||||||
|
Help: `SSH public certificate for public certificate based authentication.
|
||||||
|
Set this if you have a signed certificate you want to use for authentication.
|
||||||
|
If specified will override pubkey_file.`,
|
||||||
}, {
|
}, {
|
||||||
Name: "pubkey_file",
|
Name: "pubkey_file",
|
||||||
Help: `Optional path to public key file.
|
Help: `Optional path to public key file.
|
||||||
@ -511,6 +516,7 @@ type Options struct {
|
|||||||
KeyPem string `config:"key_pem"`
|
KeyPem string `config:"key_pem"`
|
||||||
KeyFile string `config:"key_file"`
|
KeyFile string `config:"key_file"`
|
||||||
KeyFilePass string `config:"key_file_pass"`
|
KeyFilePass string `config:"key_file_pass"`
|
||||||
|
PubKey string `config:"pubkey"`
|
||||||
PubKeyFile string `config:"pubkey_file"`
|
PubKeyFile string `config:"pubkey_file"`
|
||||||
KnownHostsFile string `config:"known_hosts_file"`
|
KnownHostsFile string `config:"known_hosts_file"`
|
||||||
KeyUseAgent bool `config:"key_use_agent"`
|
KeyUseAgent bool `config:"key_use_agent"`
|
||||||
@ -997,13 +1003,21 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If a public key has been specified then use that
|
// If a public key has been specified then use that
|
||||||
if pubkeyFile != "" {
|
if pubkeyFile != "" || opt.PubKey != "" {
|
||||||
certfile, err := os.ReadFile(pubkeyFile)
|
pubKeyRaw := []byte(opt.PubKey)
|
||||||
if err != nil {
|
// Use this error if public key is provided inline and is not a certificate
|
||||||
return nil, fmt.Errorf("unable to read cert file: %w", err)
|
// if public key file is provided instead, use the err in the if block
|
||||||
|
notACertError := errors.New("public key provided is not a certificate: " + opt.PubKey)
|
||||||
|
if opt.PubKey == "" {
|
||||||
|
notACertError = errors.New("public key file is not a certificate file: " + pubkeyFile)
|
||||||
|
err := error(nil)
|
||||||
|
pubKeyRaw, err = os.ReadFile(pubkeyFile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("unable to read cert file: %w", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pk, _, _, _, err := ssh.ParseAuthorizedKey(certfile)
|
pk, _, _, _, err := ssh.ParseAuthorizedKey(pubKeyRaw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to parse cert file: %w", err)
|
return nil, fmt.Errorf("unable to parse cert file: %w", err)
|
||||||
}
|
}
|
||||||
@ -1017,7 +1031,7 @@ func NewFs(ctx context.Context, name, root string, m configmap.Mapper) (fs.Fs, e
|
|||||||
// knows everything it needs.
|
// knows everything it needs.
|
||||||
cert, ok := pk.(*ssh.Certificate)
|
cert, ok := pk.(*ssh.Certificate)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.New("public key file is not a certificate file: " + pubkeyFile)
|
return nil, notACertError
|
||||||
}
|
}
|
||||||
pubsigner, err := ssh.NewCertSigner(cert, signer)
|
pubsigner, err := ssh.NewCertSigner(cert, signer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -15,7 +15,7 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestCmdTest demonstrates and verifies the test functions for end-to-end testing of rclone
|
// TestEnvironmentVariables demonstrates and verifies the test functions for end-to-end testing of rclone
|
||||||
func TestEnvironmentVariables(t *testing.T) {
|
func TestEnvironmentVariables(t *testing.T) {
|
||||||
|
|
||||||
createTestEnvironment(t)
|
createTestEnvironment(t)
|
||||||
|
@ -156,7 +156,7 @@ and the public key built into it will be used during the authentication process.
|
|||||||
If you have a certificate you may use it to sign your public key, creating a
|
If you have a certificate you may use it to sign your public key, creating a
|
||||||
separate SSH user certificate that should be used instead of the plain public key
|
separate SSH user certificate that should be used instead of the plain public key
|
||||||
extracted from the private key. Then you must provide the path to the
|
extracted from the private key. Then you must provide the path to the
|
||||||
user certificate public key file in `pubkey_file`.
|
user certificate public key file in `pubkey_file` or the content of the file in `pubkey`.
|
||||||
|
|
||||||
Note: This is not the traditional public key paired with your private key,
|
Note: This is not the traditional public key paired with your private key,
|
||||||
typically saved as `/home/$USER/.ssh/id_rsa.pub`. Setting this path in
|
typically saved as `/home/$USER/.ssh/id_rsa.pub`. Setting this path in
|
||||||
@ -494,6 +494,19 @@ Properties:
|
|||||||
- Type: string
|
- Type: string
|
||||||
- Required: false
|
- Required: false
|
||||||
|
|
||||||
|
#### --sftp-pubkey
|
||||||
|
|
||||||
|
SSH public certificate for public certificate based authentication.
|
||||||
|
Set this if you have a signed certificate you want to use for authentication.
|
||||||
|
If specified will override pubkey_file.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
|
||||||
|
- Config: pubkey
|
||||||
|
- Env Var: RCLONE_SFTP_PUBKEY
|
||||||
|
- Type: string
|
||||||
|
- Required: false
|
||||||
|
|
||||||
#### --sftp-pubkey-file
|
#### --sftp-pubkey-file
|
||||||
|
|
||||||
Optional path to public key file.
|
Optional path to public key file.
|
||||||
|
2
go.mod
2
go.mod
@ -60,7 +60,7 @@ require (
|
|||||||
github.com/prometheus/client_golang v1.19.1
|
github.com/prometheus/client_golang v1.19.1
|
||||||
github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8
|
github.com/putdotio/go-putio/putio v0.0.0-20200123120452-16d982cac2b8
|
||||||
github.com/quasilyte/go-ruleguard/dsl v0.3.22
|
github.com/quasilyte/go-ruleguard/dsl v0.3.22
|
||||||
github.com/rclone/gofakes3 v0.0.3-0.20240807151802-e80146f8de87
|
github.com/rclone/gofakes3 v0.0.3
|
||||||
github.com/rfjakob/eme v1.1.2
|
github.com/rfjakob/eme v1.1.2
|
||||||
github.com/rivo/uniseg v0.4.7
|
github.com/rivo/uniseg v0.4.7
|
||||||
github.com/rogpeppe/go-internal v1.12.0
|
github.com/rogpeppe/go-internal v1.12.0
|
||||||
|
4
go.sum
4
go.sum
@ -521,8 +521,8 @@ github.com/quic-go/quic-go v0.40.1 h1:X3AGzUNFs0jVuO3esAGnTfvdgvL4fq655WaOi1snv1
|
|||||||
github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
|
github.com/quic-go/quic-go v0.40.1/go.mod h1:PeN7kuVJ4xZbxSv/4OX6S1USOX8MJvydwpTx31vx60c=
|
||||||
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93 h1:UVArwN/wkKjMVhh2EQGC0tEc1+FqiLlvYXY5mQ2f8Wg=
|
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93 h1:UVArwN/wkKjMVhh2EQGC0tEc1+FqiLlvYXY5mQ2f8Wg=
|
||||||
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o=
|
github.com/rasky/go-xdr v0.0.0-20170124162913-1a41d1a06c93/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o=
|
||||||
github.com/rclone/gofakes3 v0.0.3-0.20240807151802-e80146f8de87 h1:0YRo2aYhE+SCZsjWYMFe8zLD18xieXy7wQ8M9Ywcr/g=
|
github.com/rclone/gofakes3 v0.0.3 h1:0sKCxJ8TUUAG5KXGuc/fcDKGnzB/j6IjNQui9ntIZPo=
|
||||||
github.com/rclone/gofakes3 v0.0.3-0.20240807151802-e80146f8de87/go.mod h1:z7+o2VUwitO0WuVHReQlOW9jZ03LpeJ0PUFSULyTIds=
|
github.com/rclone/gofakes3 v0.0.3/go.mod h1:z7+o2VUwitO0WuVHReQlOW9jZ03LpeJ0PUFSULyTIds=
|
||||||
github.com/relvacode/iso8601 v1.3.0 h1:HguUjsGpIMh/zsTczGN3DVJFxTU/GX+MMmzcKoMO7ko=
|
github.com/relvacode/iso8601 v1.3.0 h1:HguUjsGpIMh/zsTczGN3DVJFxTU/GX+MMmzcKoMO7ko=
|
||||||
github.com/relvacode/iso8601 v1.3.0/go.mod h1:FlNp+jz+TXpyRqgmM7tnzHHzBnz776kmAH2h3sZCn0I=
|
github.com/relvacode/iso8601 v1.3.0/go.mod h1:FlNp+jz+TXpyRqgmM7tnzHHzBnz776kmAH2h3sZCn0I=
|
||||||
github.com/rfjakob/eme v1.1.2 h1:SxziR8msSOElPayZNFfQw4Tjx/Sbaeeh3eRvrHVMUs4=
|
github.com/rfjakob/eme v1.1.2 h1:SxziR8msSOElPayZNFfQw4Tjx/Sbaeeh3eRvrHVMUs4=
|
||||||
|
Loading…
Reference in New Issue
Block a user