You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH双向文件夹传输脚本咨询:多次输密码及方案合理性

Hey there! Let’s break down your situation and figure out if your current setup makes sense, plus how to fix that annoying triple password prompt.

Is Your Current Implementation Reasonable?

Short answer: No, requiring three password inputs for your up_src.sh script is not reasonable. The whole point of writing scripts for file transfers is to automate repetitive tasks—having to manually enter a password three times defeats that purpose, introduces room for human error, and just plain slows you down.

The root cause here is almost certainly that your script is running multiple separate SSH/SCP commands (like one to trigger a backup on the server, another to upload the folder, maybe a third to clean up or set permissions). Each of these commands spins up a new SSH session, which requires its own password verification—hence three prompts.

How to Fix This (and Optimize Your Workflow)

Here are practical, actionable fixes to streamline your setup:

This is the permanent solution to password prompts. It’s secure, easy to set up, and lets all your SSH/SCP commands run without manual input:

  • Generate an SSH key pair on your client:
    ssh-keygen -t ed25519
    
    (Just hit enter through all prompts—you can add a passphrase if you want extra security, then use ssh-agent to remember it so you don’t have to enter it every time.)
  • Copy your public key to the server:
    ssh-copy-id your-username@your-server-ip
    

Once this is done, every SSH/SCP command from your client to the server will authenticate automatically.

2. Merge SSH Sessions to Reduce Prompts

If you can’t set up key auth right now, you can cut down on password prompts by combining multiple server-side actions into a single SSH command, or reuse a single SSH session for all operations:

Example: Merge Server-Side Commands

Instead of running three separate SSH/SCP calls:

# 1. Backup the folder on the server (prompt 1)
ssh user@server "cp -r /path/to/target/folder /path/to/target/folder_backup_$(date +%Y%m%d%H%M%S)"
# 2. Upload your local folder (prompt 2)
scp -r /path/to/local/folder user@server:/path/to/target/folder
# 3. Fix permissions (prompt 3)
ssh user@server "chmod -R 755 /path/to/target/folder"

Combine the server-side backup and permission fix into one command:

# Single SSH command for backup + permissions (prompt 1)
ssh user@server "cp -r /path/to/target/folder /path/to/target/folder_backup_$(date +%Y%m%d%H%M%S) && chmod -R 755 /path/to/target/folder"
# SCP upload (prompt 2)
scp -r /path/to/local/folder user@server:/path/to/target/folder

Example: Reuse a Single SSH Session

You can use SSH’s control socket feature to reuse a single session for all commands, so you only enter your password once:

# Create a persistent SSH control socket
ssh -o ControlMaster=yes -o ControlPath=~/.ssh/socket-%r@%h:%p user@server "cp -r /path/to/target/folder /path/to/target/folder_backup_$(date +%Y%m%d%H%M%S)"
# Reuse the socket for SCP upload
scp -o ControlPath=~/.ssh/socket-%r@%h:%p -r /path/to/local/folder user@server:/path/to/target/folder
# Reuse the socket for permission fixes
ssh -o ControlPath=~/.ssh/socket-%r@%h:%p user@server "chmod -R 755 /path/to/target/folder"
# Close the control socket when done
ssh -o ControlPath=~/.ssh/socket-%r@%h:%p -O exit user@server

3. Switch to rsync for Better Efficiency

rsync is way more efficient than SCP (it only transfers files that have changed) and can simplify your workflow. You can pair it with SSH key auth for fully automated transfers:

# Backup the server folder first
ssh user@server "cp -r /path/to/target/folder /path/to/target/folder_backup_$(date +%Y%m%d%H%M%S)"
# Incrementally upload your local folder
rsync -avz /path/to/local/folder/ user@server:/path/to/target/folder/
Bonus Backup Tips

To make your backup logic more robust:

  • Limit the number of backups to avoid filling up server disk space. For example, keep only the last 3 backups:
    ssh user@server "ls -t /path/to/target/folder_backup_* | tail -n +4 | xargs rm -rf"
    
  • Compress backups with tar to save space:
    ssh user@server "tar -czf /path/to/target/folder_backup_$(date +%Y%m%d%H%M%S).tar.gz /path/to/target/folder"
    

内容的提问来源于stack exchange,提问作者thoraz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:16:31