87

I've got a question that I've not been able to find an answer for. I have two computers, both of which run Ubuntu Linux 12.04. I have set up my first computer ("home") to be able to SSH into my second computer ("remote") using public/private RSA key authentication.

This is not the first SSH connection that have set up using key authentication on my home computer, so my home computer has several id_rsa private keyfiles (each of which is for a different computer to SSH into). Thus, I am able to successfully SSH only when I specify a keyfile (in ssh, the -i option), using ssh username@ipaddress -i path/to/keyfile/id_rsa.2.

That works great. However, I would also like to use sshfs, which mounts the remote filesystem. While ssh seems to play nice with multiple keys, I can't find a way to get sshfs to use the correct private key ("id_rsa.2").

Is there a way to get sshfs to do this?

1
122

Here's what works for me:

sshfs me@x.x.x.x:/remote/path /local/path/ -o IdentityFile=/path/to/key

You can figure this out via man sshfs:

-o SSHOPT=VAL ssh options (see man ssh_config)

man ssh_config

IdentityFile

Specifies a file from which the user's DSA, ECDSA or DSA authen‐ tication identity is read.

4
  • 1
    Thank you! @goldilocks, I completely missed the IdentityFile line in the sshfs man page. That's exactly what I was looking for, as well. I've just tried your solution, and it works perfectly. I appreciate the help! – J L Jan 17 '13 at 4:09
  • 1
    This command does not work on macOS Sierra – basZero Dec 22 '17 at 10:07
  • 1
    IdentityFile path note. If running sshfs with sudo, using ~ in the IdentityFile path refers to root's home, which may not be where the RSA file is. Use something like /Users/<username>/.ssh instead. – Aaron Jun 6 '18 at 21:41
  • 1
    Caveats: IdentityFile= must be an absolute path not a relative path. I learned this today. – SurpriseDog Jul 13 '20 at 1:02
23

What you need to do is specify which private key to use in the ~/.ssh/config file. for example:

Host server1.nixcraft.com
    IdentityFile ~/backups/.ssh/id_dsa
Host server2.nixcraft.com
    IdentityFile /backup/home/userName/.ssh/id_rsa
1
  • 1
    Thanks so much! @Steven You, I didn't realize that sshfs reads .ssh/config files (though I do see now that I missed a similar answer from someone's previous post, at stackoverflow.com/a/13638806/1940466). That's excellent to know. For what it's worth, I would like to accept both your and @goldilocks' answers, but I'm not able to. I also don't have enough reputation to vote up your answer. I very much appreciate the answer, though! – J L Jan 17 '13 at 4:08
3
sshfs -o ssh_command='ssh -i path/to/keyfile/id_rsa.2' username@ipaddress:/path /local/path
1
  • thanks this answer worked for me on Arch Linux for mounting android file system – Edward Torvalds Jul 3 '19 at 7:53
3

Adding to the solution proposed by @Steven You, a simple solution is :

  1. go to ~/.ssh/config
Host <nick name>
    HostName  <ipaddress>
    User <username>
    PubKeyAuthentication yes
    IdentityFile <path/to/keyfile/id_rsa.2>
  1. sshfs -p 22 <nick name>:source/file/on/server local/folder/

Your Answer

By clicking ā€œPost Your Answerā€, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.